程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php面向對象編程,php面向對象

php面向對象編程,php面向對象

編輯:關於PHP編程

php面向對象編程,php面向對象


面向對象編程的基本原則:

  • 單一職責:一個類,只需要做好一件事
  • 開放封閉:一個類,應該是可擴展的,而不是可修改的
  • 依賴倒置:一個類,不應該強依賴另一個類。每個類對應另外一個類都是可替換的
  • 配置化:盡可能地使用配置,而不是硬編碼
  • 面向接口編程:只需要關心接口,不需要關心實現

 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;

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved