首頁  >  文章  >  後端開發  >  PHP物件導向程式設計詳解:類別與對象

PHP物件導向程式設計詳解:類別與對象

WBOY
WBOY原創
2016-08-08 09:22:341000瀏覽

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-> 符號呼叫同一物件的屬性。

"; // 输出对象 echo "他的名字是 ".$p->name; // 输出对象$p的属性 $name; echo "
"; echo '他的年龄是 '$p->age; //输出age属性. ?>


程式輸出結果為:

他的名字是 Gonn 他的年龄是 24


Person類有兩個屬性,$name 和$age , 在實例化後,使用$p->name 和$p-age 列印出屬性的內容。
當然,你可以在屬性定義時不設定初始值,那樣的話,就印不出任何結果了。
改變物件的屬性,注意 8行和9行程式碼,還有輸出結果的變化。我們看到輸出的屬性值被改變了。

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物件導向程式設計詳解:PHP的多態
PHP物件導向程式設計詳解:instanceof運算子
PHP介面物件程式設計詳細資料:介面與組合模擬多繼承PHP物件導向程式設計詳解:一個介面實例PHP物件導向程式設計詳解:簡單工廠模式

 

以上就介紹了PHP物件導向程式設計詳解:類別和對象,包括了方面的內容,希望對PHP教學有興趣的朋友有幫助。

🎜 🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn