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";
類的成員有以下三個成員組成,屬性,方法,常量。
屬性分成:例項化屬性與靜態屬性 。方法也有兩種: 例項化方法與靜態方法。靜態屬性與方法都可以通過類名直接呼叫,例項化方法不可以呼叫靜態屬性。