PHP類

2018-02-22 16:40 更新

PHP教程 - PHP類

面向?qū)ο笤O(shè)計的概念

描述
Object-Oriented 使用面向?qū)ο缶幊蹋覀兛梢酝ㄟ^使用類來對一般概念建模。
Class 類是描述某事的特征和行為的代碼單元。
Object 對象是類的特定實例。
Properties 類或?qū)ο蟮奶匦苑Q為其屬性。
Method 類的行為(動作)被稱為其方法。

PHP類定義

在PHP中,我們使用class關(guān)鍵字來定義一個類。

類定義具有以下語法。

class Car { 
   //properties
   //methods
}   

這里是定義一個非常基本的Dog類所需的PHP代碼:

<?PHP
class Dog {
   public function bark() {
      print "PHP!";
   }
}
?>

這里Dog類只有一個方法,bark()。



PHP從類創(chuàng)建對象

類定義或創(chuàng)建一個新類型。 我們可以創(chuàng)建變量為新類型。 我們稱之為面向?qū)ο缶幊讨械膶ο蟆?/p>

我們可以使用以下語法創(chuàng)建一個對象:

$aRectangleObject = new RectangleClass;

我們需要使用special - > 操作符引用方法。

<?PHP
class Shape {
   public function say() {
      print "shape";
   }
}

$aRectangle = new Shape;
$aRectangle->say();
?>

上面的代碼生成以下結(jié)果。



對象內(nèi)的對象

您可以在其他對象內(nèi)使用對象。使用 - > 訪問對象中的對象。例如,我們可以定義一個 NameTag 類并給出每個 Book 一個 NameTag 對象like這個:

<?PHP
class NameTag {
        public $Words;
}
class Book {
   public $Name;
   public $NameTag;
   public function say() {
      print "Book";
   }
}
$aBook = new Book;
$aBook->Name = "PHP";
$aBook->NameTag = new NameTag;
$aBook->NameTag->Words = "from www.o2fo.com";
?>

$ NameTag 屬性聲明為像任何其他,但需要用新創(chuàng)建一次& aBook已創(chuàng)建。

PHP類屬性

類屬性與變量非常相似。

對象的屬性可以存儲單個值,值數(shù)組,甚至另一個對象。

要向類添加屬性,請首先編寫關(guān)鍵字public,private或protected,后面是屬性的名稱前面加一個$符號。

public,private或protected是可見性級別你想給物業(yè):

class MyClass { 
    public $property1;     // This is a public property 
    private $property2;    // This is a private property 
    protected $property3;  // This is a protected property 
}   
We can initialize properties at the time that we declare them:
 
class MyClass { 
  public $value = 123; 
}  

訪問屬性

我們可以訪問相應(yīng)對象的屬性值在您的調(diào)用代碼中使用以下語法:

$object->property;

寫入存儲對象的變量的名稱,后跟一個由。組成的箭頭符號連字符( - )和大于符號(>),后跟屬性名稱。

注意,屬性名稱在其前面沒有$符號。

例子

我們可以向類添加屬性。

<?PHP
class Shape{
   public $Name;

   public function say() {
       print "shape";
   }
}
$aRectangle = new Shape;
$aRectangle->say();
$aRectangle->Name = "Rect";
$aRectangle->say();
?>

上面的代碼生成以下結(jié)果。

- > 用于與屬性一起使用,還有沒有美元符號之前的名稱。

每個對象都有自己的一組屬性。 考慮下面的代碼:

<?PHP
class Shape{
   public $Name;

   public function say() {
       print "shape";
   }
}
class Rectangle extends Shape{
}


$aRect = new Rectangle;
$bRect = new Rectangle;
$aRect->Name = "A";
$bRect->Name = "B";
print $aRect->Name;
print $bRect->Name;
?>

每個對象都有自己的一組屬性。 考慮下面的代碼:...

PHP迭代對象屬性

我們可以把一個對象作為一個數(shù)組與foreach循環(huán)。foreach將迭代每個可訪問的屬性。

也就是說,私有和受保護的屬性不會可訪問的一般范圍。

看看這個腳本:

<?PHP
class Person {
        public $FirstName = "James";
        public $MiddleName = "Tuple";
        public $LastName = "List";
        private $Password = "pass";
        public $Age = 29;
        public $HomeTown = "LA";
}

$bill = new Person();

foreach($bill as $var => $value) {
        echo "$var is $value\n";
}
?>

上面的代碼生成以下結(jié)果。

請注意, $ Password 屬性無處可見,因為它被標(biāo)記為私有。

如果 foreach 循環(huán)在方法內(nèi)調(diào)用,我們應(yīng)該能夠看到屬性:

<?PHP
class Person {
        public $FirstName = "James";
        public $MiddleName = "Tuple";
        public $LastName = "List";
        private $Password = "pass";
        public $Age = 29;
        public $HomeTown = "LA";
        public function outputVars() {
                foreach($this as $var => $value) {
                       echo "$var is $value\n";
                }
        }
 }

 $bill = new Person();
 $bill->outputVars();
?> 

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號