面向對象編程的基本原則:
1、設置類的屬性
class ShopProduct { public $title = 'default product'; public $producterMainName = 'main name'; public $producterFirstName = 'first name'; public $price = 0; } $product1 = new ShopProduct(); //設置屬性 $product1->title = "My Antonia"; $product1->producterFirstName = "Cather"; $product1->producterMainName = "Willa"; $product1->price = 5.99; //訪問 echo 'author: '.$product1->producterFirstName.' '.$product1->producterMainName;
用以上方法設置屬性值會有很多問題:
第一:PHP允許動態設置屬性,如果拼錯或忘記屬性名時並不會得到警告。例如錯誤地把
$product1->producterMainName = "Willa";
寫作
$product1->producterSecondName = "Willa";
,當我們輸出作者名字的時候,會有意想不到的結果。
第二:類太過松散,我們沒有強制設置標題、價格或者產品名稱,客戶端代碼可以確定的是這些屬性存在,但是面對的可能是默認值也可能不是,理想情況下,我們希望實例化ShopProduct對象時設置有意義的屬性值。
第三:不得不重復做一些經常做的事,比如多次需要完整輸出作者的名字,就要重復使用
echo 'author: '.$product1->producterFirstName.' '.$product1->producterMainName;