字 | 描述 |
---|---|
Object-Oriented | 使用面向?qū)ο缶幊蹋覀兛梢酝ㄟ^使用類來對一般概念建模。 |
Class | 類是描述某事的特征和行為的代碼單元。 |
Object | 對象是類的特定實例。 |
Properties | 類或?qū)ο蟮奶匦苑Q為其屬性。 |
Method | 類的行為(動作)被稱為其方法。 |
在PHP中,我們使用class關(guān)鍵字來定義一個類。
類定義具有以下語法。
class Car { //properties //methods }
這里是定義一個非常基本的Dog類所需的PHP代碼:
<?PHP class Dog { public function bark() { print "PHP!"; } } ?>
這里Dog類只有一個方法,bark()。
類定義或創(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)使用對象。使用 - >
訪問對象中的對象。例如,我們可以定義一個 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)建。
類屬性與變量非常相似。
對象的屬性可以存儲單個值,值數(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; ?>
每個對象都有自己的一組屬性。 考慮下面的代碼:...
我們可以把一個對象作為一個數(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é)果。
更多建議: