PHP object - fantasy0107/notes GitHub Wiki

術語

  1. 類別 class - 創建物件的藍圖
  2. 物件 object - 類別實體
  3. 實例化 instantiate - 從類別產生物件的過程
  4. 屬性 property - 物件的變數
  5. 方法 method - 物件的功能
  6. 封裝 encapsulation - 類別提供特定方法
  7. 繼承 inheritance - 繼承存在的類別

和物件相關的 PHP keyword

abstract   class      const     extends   final 
implements instanceof insteadof interface namespace 
new private protected public static
trait self parent

和物件相關的 PHP magic methods

  1. __construct() - 當建立新的物件時會呼叫
  2. __destruct() - 當沒有用到這個物件時會呼叫
  3. __call() - 呼叫不存在的方法
  4. __callStatic() - 呼叫不存在的靜態方法
  5. __get() - 讀取不存在的屬性
  6. __set() - 寫入不存在的屬性
  7. __isset() - 用 isset() or empty() 在不存在的屬性.
  8. __unset() - 用 unset() 再不存在的屬性.
  9. __sleep() -
  10. __wakeup() - 重新連 DB 時
  11. __toString() - 當物件被當成 string 輸出時
  12. __invoke() - 當物件被用 function 的方式呼叫
  13. __set_state() - 這個靜態方法被 var_export() 呼叫.
  14. __clone() - 當使用 clone 去複製物件時會觸發
  15. __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 抽象

宣告特定方法但是這個方法只能子類別實作