Laravel 原始碼筆記 PHP 預定義介面 ArrayAccess

php_yt發表於2020-03-03

說明

laravel 中可通過 $app['events'] 獲取 events 例項,正因為 $app (服務容器) 實現了 ArrayAccess 介面。

定義

ArrayAccess 是 PHP 預定義 interface ,官方的定義:提供訪問物件作為陣列的介面

ArrayAccess{
    //abstract 抽象 ; mixed 混合型別 ;void 無返回值
    abstract public offsetExists ( mixed $offset ) : bool
    abstract public offsetGet ( mixed $offset ) : mixed
    abstract public offsetSet ( mixed $offset , mixed $value ) : void
    abstract public offsetUnset ( mixed $offset ) : void
}

使用

use ArrayAccess;
class Foo implements ArrayAccess
{
    public function offsetExists( $offset ) {
        // 自定義
    }

    public function offsetGet( $offset ) {
        // 自定義
    }

    public function offsetSet( $offset, $value ) {
        // 自定義
    }

    public function offsetUnset( $offset ) {
        // 自定義
    }
}

$foo = new Foo();

isset( $foo['key'] ); ----呼叫----> offsetExists( $offset )
$foo['key']; ----呼叫----> offsetGet( $offset )
$foo['key'] = 'value'; ----呼叫----> offsetSet( $offset, $value )
unset( $foo['key'] ); ----呼叫----> offsetUnset( $offset )
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章