PHP object - fantasy0107/notes GitHub Wiki
術語
- 類別 class - 創建物件的藍圖
- 物件 object - 類別實體
- 實例化 instantiate - 從類別產生物件的過程
- 屬性 property - 物件的變數
- 方法 method - 物件的功能
- 封裝 encapsulation - 類別提供特定方法
- 繼承 inheritance - 繼承存在的類別
和物件相關的 PHP keyword
abstract class const extends final
implements instanceof insteadof interface namespace
new private protected public static
trait self parent
和物件相關的 PHP magic methods
- __construct() - 當建立新的物件時會呼叫
- __destruct() - 當沒有用到這個物件時會呼叫
- __call() - 呼叫不存在的方法
- __callStatic() - 呼叫不存在的靜態方法
- __get() - 讀取不存在的屬性
- __set() - 寫入不存在的屬性
- __isset() - 用 isset() or empty() 在不存在的屬性.
- __unset() - 用 unset() 再不存在的屬性.
- __sleep() -
- __wakeup() - 重新連 DB 時
- __toString() - 當物件被當成 string 輸出時
- __invoke() - 當物件被用 function 的方式呼叫
- __set_state() - 這個靜態方法被 var_export() 呼叫.
- __clone() - 當使用 clone 去複製物件時會觸發
- __debugInfo() - 當使用 var_dump() 去輸出物件時會丟出的東西
建立物件
$object = new Person("Fred", 35);
存取屬性與方法
//屬性
$object->propertyname;
//方法
$object->method([.......]);
宣告類別
$this / self / parent
$this
使用物件的屬性或方法
self
當前類別的靜態屬性或方法
parent
使用父親類別
能見度 public / protected / private
public
可以從外部呼叫
protected
可以從衍生類別呼叫
private
只能在類別內呼叫
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj = new MyClass();
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private
static
靜態,東西還沒有 new 出來的時候就可以用
//靜態方法
$spanish_couriers = Courier::getCouriersByCountry('Spain');
//靜態屬性
$code = Country::TAIWAN;
const
不可改變的數值
inheritance 繼承
從別的類別繼承屬性與方法
interface 介面
提供方法原型與常數
trait 特徵
分享不同類別的功能
abstract 抽象
宣告特定方法但是這個方法只能子類別實作