PHP OOP編程的觀念心得筆記
前言
最近幾年程式語言的 framework 進步真的是飛快,像是最近很火紅的 Vue.js、ReactJS、或是老牌的 Laravel等,而在 PHP 的 framework 當中又以 Laravel 最受開發者青睞,在開始學習 Laravel 之前必須先學習什麼是 OOP (物件導向程式設計 Object-oriented programming) 物件導向並非是有特定的程式規格,就以我個人的觀感理解比較可以說是他是一種
設計模式比較恰當,在學習的過程中只要一直圍繞著他的中心思想,想必在學習上會較為輕鬆。 說這麼多不如直接殺 code 會比較有感覺,在拜讀過 O’reilly現代PHP 之後其中一句話讓人印象深刻意思大概是這樣:
你不需要現在就立馬實踐物件導向設計風格,你只需要將他記在你的腦袋中,直到有一天你豁然開朗的將他應用在你的程式代碼上。 對於像我這樣的新手來說要立馬用上可能有點困難,所以才寫下此篇筆記以供未來參考。
物件導向
命名
通常我們的檔名會與class同名
類別
在英文中又稱 class 在 OOP 當中 class 可以算是一個很基礎的…
物件
class Human{
public $eyes=2;
}
$human=new human();
var_dump($human);
我們命名了一個 class 叫 human 並且 new 了一個 $human,所以我可以說 $human 是 Human 這個 class 的一個實例英文為 instance
Getter 和 Setter
為何我們需要 Getter 和 Setter 呢? 我們用程式碼來展現應該會清楚一點
class Person{
public $name;
public $age;
public function __construct($name) {
$this->name = $name;
}
public function setAge($age){
if($age < 18){
throw new Exception("too yong");
}
$this->age=$age;
}
}
$aj=new Person('AJ');
$aj->setAge(17);
var_dump($aj);
//結果為
Fatal error: Uncaught Exception: too yong
這樣我們就可以利用 getter 和 setter 來進行邏輯判斷,可是這樣子會有一個問題,直接給予變數 value 這是一件很不安全的事情 code 如下
$aj=new Person('AJ');
$aj->setAge(23);
$aj->age=15;
var_dump($aj);
//結果為
object(Person)#1 (2) { ["name"]=> string(2) "AJ" ["age"]=> int(15) }
我們可以看到我們直接將 $age 設為15了這樣代表我們的程式邏輯判斷是沒有用的。