PHP物件導向編程詳解:類和對象
從OOP的視角看,不應區分語言。無論是C++、無論是Java、無論是.net還有更多物件導向的語言,只要你瞭解了OO的真諦,便可以跨越語言,讓你的思想輕鬆的跳躍。便沒有對於Java、.net、PHP 之間誰強誰弱的爭執了。
希望這個介紹PHP5物件導向編程(OOP)的資料能讓初學者受益,能讓更多的PHPer開始轉向OO的編程過程。
相對PHP4,PHP5在物件導向方面改變了很多。我們將只介紹PHP5環境下的物件導向。而我們必須改變自己來跟隨PHP5的發展。如果代碼結果在你的環境下執行不一致,請確認你的環境為PHP5。
我們假設讀者沒有任何物件導向的知識,即使你是第一次聽說OOP,也可以讀懂這文章。但我希望你必須對PHP有一些瞭解。
在後面我們將使用一些例子,來逐漸分析PHP5的OO基礎。
物件導向只解決了兩個問題,代碼的可擴充性 、代碼的可維護性。
不得不說句,php越來越像Java了。
整理參考:
http://www.lai18.com/content/425094.html
Everything is Object:萬事萬物皆對象。
物件導向的編程(OOP)思想力圖使對電腦語言中對事物的描述與現實世界中該事物的本來面目儘可能的一致。物件導向語言與我們的生活是想通的,物件導向語言學習起來其實很簡單。在應用中更符合我們的生活邏輯。
類(Class)是用來描述一個對象(Object):
類描述了每個對象應包括的資料,類描述了每個對象的行為特徵。
Class/Object:類(class)和對象(object)是物件導向方法的核心概念。
類是對一類事物描述,是抽象的、概念上的定義;
對象是實際存在的該類事物的每個個體,因而也稱執行個體(instance)。在電腦中,可以理解為,在記憶體中建立了實實在在存在的一個記憶體地區儲存著這個對象。
建立對象的過程稱為建立對象,也稱為執行個體化。
PHP5中的類和對象
我們先建立一個基礎的類。
PHP中使用關鍵字 class 來定義一個類。類的命名一般使用首字元大寫,而後每個單詞首字元大寫串連的方式方便閱讀。
這樣,我們就擁有了第一個PHP類。
我們繼續來使用這個類,使用 new 這個關鍵字建立對象,用echo列印$p
我們定義了一個變數 $p ,使用 new 這個關鍵字建立了一個Person的對象。
列印變數$p,我們看到輸出Object id #1 提示這是一個對象。
$p = new Person();也可以寫成 $p = new Person;,但不建議使用後面的這種方式。
PHP5 中的屬性
屬性:用來描述對象的資料元素稱為對象的屬性(也稱為資料/狀態)
在PHP5中,屬性指在class 中聲明的變數。在聲明變數時,必須使用 public private protected 之一進行修飾,定義變數的存取權限。
Public(公開): 可以自由的在類的內部外部讀取、修改。
Private(私人): 只能在這個當前類的內部讀取、修改。
Protected(受保護):能夠在這個類和類的子類中讀取和修改。
屬性的使用:通過引用變數的 -> 符號調用變數指向對象的屬性。
在方法內部通過 $this-> 符號調用同一對象的屬性。
name = 'Tom'; //變更姓名為 Tom$p->age = 25 ; // 變更年齡為 25 歲.echo "他的名字是 ".$p->name; // 輸出對象$p的屬性 $name;echo "";echo '他的年齡是 '.$p->age; //輸出age屬性.?>
建立一個Person的對象,改變這個對象的屬性。為它命名,查看它的名字。你就是機器裡面這個Person對象的上帝,按照你定義的規則,這個實實在在記憶體中的Person對象被建立了,而且它有了可以改變的屬性。
現在,我們就是電腦世界的上帝,準備好創造世界吧。
Private 修飾的屬性,在當前對象以外不能訪問。設定私人屬性是為了進行資料的隱藏。
隱藏:指對象的一種保護機制,使得它的屬性或方法不被外部的程式直接存取。
name; // 輸出對象$p的屬性 $name;?>
運行此程式將會輸出:
Fatal error: Cannot access private property Person::$name in E:\PHPProjects\test.php on line 9
私人屬性不能被外部訪,這樣做的好處後面會介紹到。
延伸閱讀
此文章所在專題列表如下:
PHP物件導向編程詳解:類和對象
PHP物件導向編程詳解:類的屬性
PHP物件導向編程詳解:類的方法
PHP物件導向編程詳解:對象的比較
PHP物件導向編程詳解:建構函式
PHP物件導向編程詳解:類的繼承
PHP物件導向編程詳解:存取控制
PHP物件導向編程詳解:方法覆蓋
PHP物件導向編程詳解:this關鍵字
PHP物件導向編程詳解:parent::關鍵字
PHP物件導向編程詳解:再談重載
PHP物件導向編程詳解:擷取使用者資料
PHP物件導向編程詳解:使用者權限管理類
PHP物件導向編程詳解:static變數與方法
PHP物件導向編程詳解:單例模式
PHP物件導向編程詳解:final類和方法
PHP物件導向編程詳解:PHP中的常量
PHP物件導向編程詳解:抽象類別
PHP物件導向編程詳解:抽象方法
PHP物件導向編程詳解:抽象類別繼承抽象類別
PHP物件導向編程詳解:靜態抽象方法
PHP物件導向編程詳解:模板模式
PHP物件導向編程詳解:介面與抽象方法
PHP物件導向編程詳解:介面的實現
PHP物件導向編程詳解:介面的繼承
PHP物件導向編程詳解:類型提示
PHP物件導向編程詳解:PHP的多態
PHP物件導向編程詳解:instanceof運算子
PHP物件導向編程詳解:介面與組合類比多繼承
PHP物件導向編程詳解:一個介面執行個體
PHP物件導向編程詳解:簡單原廠模式