PHP 5.4 Class簡(jiǎn)介
在PHP中,Class是面向?qū)ο缶幊讨械囊粋€(gè)重要的構(gòu)成部分。通過(guò)使用Class,可以將數(shù)據(jù)和方法封裝在一起,并且可以通過(guò)實(shí)例化對(duì)象的方式進(jìn)行多次調(diào)用。PHP 5.4版本的Class在之前的版本的基礎(chǔ)上進(jìn)行了一定的優(yōu)化和更新,可以更加方便的使用。下面我們來(lái)詳細(xì)了解一下。
屬性的默認(rèn)值
在PHP 5.4中,可以為一個(gè)屬性設(shè)置默認(rèn)值。比如下面的代碼:
class myClass { public $name = 'class name'; }在這個(gè)例子中,當(dāng)實(shí)例化myClass的對(duì)象時(shí),$name屬性的默認(rèn)值為'class name'。這樣我們就可以不需要在每次實(shí)例化時(shí)都進(jìn)行屬性值的重新賦值了。當(dāng)然,在實(shí)例化時(shí)也可以覆蓋掉默認(rèn)值。 對(duì)象的靜態(tài)成員 靜態(tài)成員在一個(gè)類(lèi)中是共享的,不需要實(shí)例化就可以直接進(jìn)行訪問(wèn)。我們可以使用static關(guān)鍵字來(lái)定義靜態(tài)成員。比如下面的代碼所示:
class myClass { public static $count = 0; public function __construct() { self::$count++; } } $a = new myClass(); $b = new myClass(); echo myClass::$count; //輸出 2在這個(gè)例子中,我們定義了一個(gè)靜態(tài)屬性$count,并在構(gòu)造函數(shù)中每一次實(shí)例化對(duì)象都會(huì)使$count累加1。最后,我們可以直接通過(guò)myClass::$count來(lái)訪問(wèn)這個(gè)靜態(tài)屬性。 命名空間使用 PHP 5.4引入了命名空間的概念,可以在不同的命名空間中進(jìn)行類(lèi)的定義。從而可以避免不同的類(lèi)之間名稱沖突的問(wèn)題。比如下面的代碼:
namespace myProject; class myClass { public function __construct() { echo "Class in myProject namespace!"; } } namespace otherProject; class myClass { public function __construct() { echo "Class in otherProject namespace!"; } } $myClass1 = new \myProject\myClass(); //輸出 "Class in myProject namespace!" $myClass2 = new \otherProject\myClass(); //輸出 "Class in otherProject namespace!"在這個(gè)例子中,我們定義了兩個(gè)名字相同的類(lèi)myClass在不同的命名空間下,通過(guò)在實(shí)例化時(shí)加上命名空間的前綴可以避免類(lèi)名稱沖突的問(wèn)題。 最后附上一個(gè)完整的PHP 5.4 Class的例子:
namespace myProject; class myClass { public static $count = 0; public function __construct() { self::$count++; } public function printCount() { echo "Total count: " . self::$count; } } $myClass1 = new myClass(); $myClass2 = new myClass(); $myClass1->printCount(); //輸出 "Total count: 2"在這個(gè)例子中,我們定義了一個(gè)名為myClass的類(lèi),在構(gòu)造函數(shù)中定義了計(jì)數(shù)器$count,并在printCount函數(shù)中打印總數(shù)。最后,我們進(jìn)行兩次實(shí)例化,并通過(guò)$myClass1實(shí)例的printCount方法來(lái)打印計(jì)數(shù)器的總數(shù)。