PHP的ArrayAccess學習筆記

2021-07-03 16:31:35 字數 1907 閱讀 6741

下面是 arrayaccess 的摘要:

arrayaccess
由於php的陣列的強大,很多人在寫 php 應用的時候經常將配置資訊儲存在乙個陣列裡。下面就來介紹下如何實現像訪問陣列一樣訪問物件。

class

objimplements

arrayaccess

//set操作

public

function

offsetset

($offset, $value) else

}//檢查是否已定義

public

function

offsetexists

($offset)

//刪除操作

public

function

offsetunset

($offset)

//取值操作

public

function

offsetget

($offset)

}$obj = new obj;

var_dump(isset($obj["two"]));

var_dump($obj["two"]);

unset($obj["two"]);

var_dump(isset($obj["two"]));

$obj["two"] = "a value";

var_dump($obj["two"]);

print_r($obj);

上面的例子輸出結果如下

bool(true)

int(2)

bool(false)

string(7) "a value"

obj object

( [container:obj:private] => array

([one] => 1

[three] => 3

[two] => a value

))

學習了上面的例子,我們來個高階版採用單例模式,這樣我們的類就可以像全域性變數一樣四處橫行了。

class

configuration

implements

arrayaccess

//例項話自身物件

public

static

function

instance

() return

self::$config;

}//檢查乙個偏移位置是否存在

function

offsetexists

($index)

//獲取乙個偏移位置的值

function

offsetget

($index)

//設定乙個偏移位置的值

function

offsetset

($index, $newvalue)

//復位乙個偏移位置的值

function

offsetunset

($index)

}$config = configuration::instance();

print_r($config);

echo"";

echo

$config['binzy'];

echo"";

$config['binzy'] = '1222';

echo

$config['binzy'];

總的來說還是很簡單的只有四個方法,很容易掌握,另外可以配合__call,__get,__set實現更多的高階功能。著名的yii框架就使用了arrayaccess讓物件可以像陣列一樣訪問。

PHP的ArrayAccess介面簡介

最近在研究php微框架slim的原始碼,slim中的依賴注入基於pimple,於是又去學習了一下pimple。對比之前自己寫的依賴注入類,pimple有乙個很新鮮的用法,不是採用 container session storage function c 而是以陣列方式進行注入 container s...

PHP的ArrayAccess介面詳解

陣列式訪問介面,該介面的作用是提供像訪問陣列一樣訪問物件的能力 arrayaccess arrayandobjectaccess 該類允許以陣列或物件的方式進行訪問 author 瘋狂老司機 class arrayandobjectaccess implements arrayaccess 以物件方...

PHP預定義介面之 ArrayAccess

arrayaccess 的作用是使得你的物件可以像陣列一樣可以被訪問。應該說 arrayaccess 在php5中才開始有的,php5中加入了很多新的特性,當然也使類的過載也加強了,php5 中新增了一系列介面,這些介面和實現的 class 統稱為 spl。這個介面定義了4個必須要實現的方法 下面是...