PHP 專案:PHP

設定好開發環境後,終於可以開始編寫了。就來寫物件導向的 PHP 吧。

關於方法

先簡單講講物件導向吧:我們會用抽象的 class 生產物件(object),然後在裡面呼叫無數個相似的方法(method)。因此,class 就是個生產物件的工廠;而方法則是每個透過 class 建立的物件,所內建的函式。

class Water
{
    private function suger($secret)
    {
        return $secret;
    }
    public function h2o()
    {
        return 1;
    }
    public function coffine($contain)
    {
        return $contain;
    }
}

$tea = new Water;
$beer = new Water;
$juice = new Water;

// 在這裡,三個變數($tea、$beer、$juice)都內建了 h2o 與 coffine 這兩個方法。

// 那 suger 呢?這方法有趣了:它只能在 class 裡面被呼叫,在 class 以外呼叫會出錯:

echo( $juice->suger(100) ); // Fatal error: Uncaught Error: Call to private method Water::suger()

// 善加使用的話,就能貫徹物件導向的其中一個原則:封裝(Encapsulation)。

靜態方法

class 是一個抽象的存在:在物件誕生前,你理論上沒辦法把方法叫出來。因此,像下面這麼作會出問題:

// 承上
$milk = Water->h2o(); // Deprecated: Non-static method Water::h2o() should not be called statically...
$coke = Water::coffine(0.1); // Deprecated: Non-static method Water::coffine() should not be called statically...

這樣寫的話會出現 Non-static method should not be called statically 的警告。有些還會直接壞掉,所以最好先宣告物件,再呼叫方法。

好險 PHP 7 可以寫成這樣來同時建立物件、並呼叫方法: $milk = (new Water)->h2o();

其他東西

  1. 如果想用相對路徑,請使用 __DIR__ 關鍵字。
  2. 想接 JSON API 的話,請使用 file_get_contents() 方法。對了,記得要用 json_decode() 方法,讓 PHP 能讀 JSON API 喔。

好,結束囉。下次有空再寫吧。雖然以後應該沒有了。

參考資料