1. 程式人生 > >php學習心得---面向物件篇

php學習心得---面向物件篇

繼續之前的視訊教學,對php的理解也有了進一步的認識。其實php也是面向物件的,何為面向物件首先得有個對比物才行-------面向過程。

那麼問題來了,什麼是面向物件,什麼又是面向過程呢?這兩個抽象的概念對於新手來說不是很好理解,還好的是我已經工作好幾年了,算是職場老人了。我也把這個問題問了個旁邊新員工,根據他的反饋,覺得他還是沒有理解面向物件和麵向過程的概念。所以,我就跟他打了個比喻,面向過程就好比做一件事情,要按照步驟一步一步執行,就像自個兒做飯的順序,而面向物件就好比把一樣菜進行分工,交給不同的人也就是物件來做,它們做這道菜的其中之一的工序,最後做好這道菜。

php面向物件不可避免就有物件和類,屬性與方法。在學習值傳遞和引用傳遞這一章節中,我加深了對它們的理解:

class abc {
                    var $ss = 10;
                }
                                    
                $stu02 = new abc();
                $stu03 = $stu02;   
                $stu02->ss = 15;
                echo "stu02->ss is " . $stu02->ss . " stu03->ss is " . $stu03->ss;                                 
                echo "<hr>";

頁面顯示:


$stu04 = new abc();
                $stu05 = & $stu04;  //這是引用傳遞
                $stu04->ss = 88;
                echo "stu04->ss is " . $stu04->ss . " stu05->ss is " . $stu05->ss; 

頁面顯示:

由此可知,不管是隻傳遞還是引用傳遞,只要物件的一個值變了另一個值也跟著變。我剛開始也不能理解,因為之前一直是做java開發的,物件的引用賦值,得到的另一個物件跟之前的是兩個完全不同的物件,怎麼可能到最後值也跟著變呢,其實這裡的引用只是指向物件的引用名而非物件實體   ,好比  $stu04  ----->  物件引用名  ------->物件實體

所以物件引用名的值該變,也跟著變。

php建立一個物件有三種方式   : 1、 $obj1 = new cls(); $obj2 = new cls(); 第一種我就不講了,一看很明瞭  2、 這種方式是例項化原先類的例項名 $obj1 = new cls();

$obj2 = new obj1();   3、class cls{...........}    $obj3 = "cls";
類的成員有以下三個成員組成,屬性,方法,常量。

屬性分成:例項化屬性與靜態屬性 。方法也有兩種: 例項化方法與靜態方法。靜態屬性與方法都可以通過類名直接呼叫,例項化方法不可以呼叫靜態屬性。