1. 程式人生 > >PHP 隨記

PHP 隨記

1.標頭檔案自動載入,這個函式比OC裡面要好用,哈哈,可能是iOS開發多了,到處要比較,當然,Swift是自動載入的,不需要做任何動作

spl_autoload_register(function ($class_name) { // 只能載入同目錄的檔案
    require_once $class_name . '.php';
});

2.在類中常量的訪問,本來以為是下面的方式

class Math {

    const PI = 3.14;

    public function circleArea($r = 10) {
        return $r * $r * PI;
    }
}
發現是錯的,既然在類中定義的,當然可以直接訪問,下面的方法是正確的。
class Math {

    const PI = 3.14;

    public function circleArea($r = 10) {
        return $r * $r * Math::PI;
    }
}
類名:: 可以改為 self:: 原來php中也有self關鍵字的,第一次發現,self關鍵字貌似也只能用在const和static修飾的變數上。
class Math {

    const PI = 3.14;

    public function circleArea($r = 10) {
        return $r * $r * self::PI;
    }
}
再來看幾個關鍵字:this, self parent

this是指向當前物件的指標(姑且用C裡面的指標來看吧)
self是指向當前類的指標
parent是指向父類的指標(我 們這裡頻繁使用指標來描述,是因為沒有更好的語言來表達)

self與$this的區別

1.    區別:代表不一樣的內容:self代表類,$this代表物件

2.    區別:訪問的內容也不一樣:self訪問類常量,$this訪問屬性和方法(普通)

3.    區別:self與$this訪問資料的方式不一樣,self使用範圍解析操作符(::),$this使用物件訪問符(->)

4.    相同:都是在類中使用(都是在方法裡面使用)

靜態(static)

在類中也有類似函式的靜態變數之類的東西,(函式中:不被重複定義,函式的多次呼叫共有一個靜態變數),使用靜態修飾的表示該屬性或者方法屬於類,不會因為物件的例項化而改變其本身的內容。

語法:

1.    靜態屬性:訪問修飾限定符static 屬性名字

2.    靜態方法:訪問修飾限定符static function 方法名字()

靜態與非靜態的區別

1.    設定出發點:靜態是給類使用,非靜態是給物件使用

2.    物件不能訪問靜態屬性(物件訪問屬性只會去物件的記憶體區域(堆)找,而靜態屬性在程式碼區),物件能夠訪問靜態方法(靜態方法和普通方法都在程式碼區裡)

3.    類能夠訪問普通方法(方法裡面沒有使用$this),類不能訪問普通屬性(屬性是在物件空間裡)