PHP的ArrayAccess介面詳解

2021-08-17 02:28:43 字數 2781 閱讀 2636

陣列式訪問介面,該介面的作用是提供像訪問陣列一樣訪問物件的能力

arrayaccess  

<?php  

/*** arrayandobjectaccess

* 該類允許以陣列或物件的方式進行訪問

** @author 瘋狂老司機

*/class

arrayandobjectaccess 

implements

arrayaccess   

/*** 以物件方式新增乙個陣列元素

** @access public 

* @param string 陣列元素鍵名

* @param mixed  陣列元素值

* @return mixed

*/public

function

__set(

$key

,$value

)   

/*** 以物件方式判斷陣列元素是否設定

** @access public

* @param 陣列元素鍵名

* @return boolean

*/public

function

__isset(

$key

)   

/*** 以物件方式刪除乙個陣列元素

** @access public

* @param 陣列元素鍵名

*/public

function

__unset(

$key

)   

/*** 以陣列方式向data陣列新增乙個元素

** @access public

* @abstracting arrayaccess

* @param string 偏移位置

* @param mixed  元素值

*/public

function

offsetset(

$offset

,$value

)  else

}  /*** 以陣列方式獲取data陣列指定位置元素

** @access public   

* @abstracting arrayaccess       

* @param 偏移位置

* @return mixed

*/public

function

offsetget(

$offset

)   

/*** 以陣列方式判斷偏移位置元素是否設定

** @access public

* @abstracting arrayaccess

* @param 偏移位置

* @return boolean

*/public

function

offsetexists(

$offset

)   

/*** 以陣列方式刪除data陣列指定位置元素

** @access public

* @abstracting arrayaccess     

* @param 偏移位置

*/public

function

offsetunset(

$offset

)   

}  }  

$animal

= new

arrayandobjectaccess();  

$animal

->dog = 

'dog'

; // 呼叫arrayandobjectaccess::__set

$animal

['pig'

] = 

'pig'

; // 呼叫arrayandobjectaccess::offsetset

var_dump(isset($animal

->dog)); 

// 呼叫arrayandobjectaccess::__isset

var_dump(isset($animal

['pig'

])); 

// 呼叫arrayandobjectaccess::offsetexists

var_dump($animal

->pig); 

// 呼叫arrayandobjectaccess::__get

var_dump($animal

['dog'

]); 

// 呼叫arrayandobjectaccess::offsetget

unset($animal

['dog'

]); 

// 呼叫arrayandobjectaccess::offsetunset

unset($animal

->pig); 

// 呼叫arrayandobjectaccess::__unset

var_dump($animal

['pig'

]); 

// 呼叫arrayandobjectaccess::offsetget

var_dump($animal

->dog); 

// 呼叫arrayandobjectaccess::__get

?>  

以上輸出:

boolean true

boolean true

string 'pig' (length=3)

string 'dog' (length=3)

null

null

PHP的ArrayAccess學習筆記

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

PHP的ArrayAccess介面簡介

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

PHP預定義介面之 ArrayAccess

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