PHP 物件導向

來源:互聯網
上載者:User

標籤:style   blog   http   ar   color   使用   sp   java   on   

從OOP的視角看,不應區分語言。無論是C++、無論是Java、無論是.net還有更多物件導向的語言,只要你瞭解了OO的真諦,便可以跨越語言,讓你的思想輕鬆的跳躍。便沒有對於Java、.net、PHP 之間誰強誰弱的爭執了。

希望這個介紹PHP5物件導向編程(OOP)的資料能讓初學者受益,能讓更多的PHPer開始轉向OO的編程過程。

相對PHP4,PHP5在物件導向方面改變了很多。我們將只介紹PHP5環境下的物件導向。而我們必須改變自己來跟隨PHP5的發展。如果代碼結果在你的環境下執行不一致,請確認你的環境為PHP5。

我們假設讀者沒有任何物件導向的知識,即使你是第一次聽說OOP,也可以讀懂這文章。但我希望你必須對PHP有一些瞭解。

在後面我們將使用一些例子,來逐漸分析PHP5的OO基礎。

物件導向只解決了兩個問題,代碼的可擴充性 、代碼的可維護性。

不得不說句,php越來越像Java了。

Everything is Object:萬事萬物皆對象。

物件導向的編程(OOP)思想力圖使對電腦語言中對事物的描述與現實世界中該事物的本來面目儘可能的一致。物件導向語言與我們的生活是想通的,物件導向語言學習起來其實很簡單。在應用中更符合我們的生活邏輯。

類(Class)是用來描述一個對象(Object):

類描述了每個對象應包括的資料,類描述了每個對象的行為特徵。

Class/Object:類(class)和對象(object)是物件導向方法的核心概念。

類是對一類事物描述,是抽象的、概念上的定義;

對象是實際存在的該類事物的每個個體,因而也稱執行個體(instance)。在電腦中,可以理解為,在記憶體中建立了實實在在存在的一個記憶體地區儲存著這個對象。

建立對象的過程稱為建立對象,也稱為執行個體化。

PHP5中的類和對象

我們先建立一個基礎的類。

PHP中使用關鍵字 class 來定義一個類。類的命名一般使用首字元大寫,而後每個單詞首字元大寫串連的方式方便閱讀。

<?class Person { }$p = new Person();echo $p;?>

這樣,我們就擁有了第一個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-> 符號調用同一對象的屬性。

<?class Person{   public $name = "Gonn"; //定義public屬性 $name.   public $age = 20; // 定義 public 屬性 $age;}$p = new Person(); // 建立對象echo $p."<br>";    // 輸出對象echo "他的名字是 ".$p->name;     // 輸出對象$p的屬性 $name;輸出:Gonnecho "<br>";echo ‘他的年齡是 ‘$p->age; //輸出age屬性.輸出20?>

Person類有兩個屬性,$name 和 $age , 在執行個體化後,使用$p->name 和 $p->age 列印出屬性的內容。

當然,你可以在屬性定義時不設定初始值,那樣的話,就列印不出任何結果了。

改變對象的屬性,注意 8行和9行代碼,還有輸出結果的變化。我們看到輸出的屬性值被改變了。

<?// 1-4.phpclass Person{   public $name = "NoName"; //定義public屬性 $name.   public $age = 20; // 定義 public 屬性 $age;}$p = new Person(); // 建立對象$p->name = ‘Tom‘; //變更姓名為 Tom$p->age = 25 ; // 變更年齡為 25 歲.echo "他的名字是 ".$p->name;     // 輸出對象$p的屬性 $name;輸出Tomecho "<br>";echo ‘他的年齡是 ‘.$p->age; //輸出age屬性.輸出25?>

建立一個Person的對象,改變這個對象的屬性。為它命名,查看它的名字。你就是機器裡面這個Person對象的上帝,按照你定義的規則,這個實實在在記憶體中的Person對象被建立了,而且它有了可以改變的屬性。

現在,我們就是電腦世界的上帝,準備好創造世界吧。

Private 修飾的屬性,在當前對象以外不能訪問。設定私人屬性是為了進行資料的隱藏。

隱藏:指對象的一種保護機制,使得它的屬性或方法不被外部的程式直接存取。

<?// 1-3.phpclass Person{   private $name = "Gonn"; //定義public屬性 $name.   public $age = 20; // 定義 public 屬性 $age;}$p = new Person(); // 建立對象echo "他的名字是 ".$p->name;     // 輸出對象$p的屬性 $name;?>

私人屬性不能被外部訪,報錯:

Fatal error: Cannot access private property Person::$name in E:\PHPProjects\test.php on line 9

 

原文來自:http://www.nowamagic.net/

PHP 物件導向

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.