下面是 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個必須要實現的方法 下面是...