有乙個物件,不過希望能用陣列的語法來讀寫資料,可以使用 實現spl的arrayaccess介面來解決。
使用場景:載入配置檔案類。larvel框架載入配置檔案就這利用陣列來操作物件。
陣列式訪問object ,必須實現下面4個方法
/** offsetexists (指定乙個元素是否已定義)
* offsetget (獲取乙個元素的值)
* offsetset (將元素設定為乙個新值)
* offsetunset (刪除乙個元素及值)
*/
1class fakearray implements
arrayaccess 910
//isset 時候觸發
11public
function offsetexists($offset)12
1516
//獲取乙個元素時觸發
17public
function offsetget($offset)18
2122
//設定乙個元素時觸發
23public
function offsetset($offset, $value)24
2728
//unset時觸發
29public
function offsetunset($offset)30
33}3435
$arr = new
fakearray();
3637
$arr['animal'] = 'rabbit';
38print_r($arr
);39
40if (isset($arr['animal']) && $arr['animal']== 'rabbit')
41unset($arr['animal']);
從上面**可以看到:
每乙個操作會呼叫乙個方法
/** $arr['animal'] = 'rabbit' 觸發offsetset
* isset($arr['animal']) 觸發offsetexists
* $arr['animal'] == 'rabbit' 觸發offsetget
* unset($arr['animal']) 觸發offsetunset
*/
PHP物件使用陣列形式訪問成員變數
php中有很多介面類,不過平時都不會怎麼用到.一般訪問php類的變數都是使用類 變數名進行訪問.除了這樣還可以實現介面類用陣列方式進行訪問類 變數名 需要實現的是arrayaccess介面類並且實現這個介面的4個方法就可以了.判斷存在 public function offsetexists off...
php擴充套件 如何訪問php陣列
在php擴充套件中,時常需要接受php型別的陣列作為引數,php陣列的引數都是zval型別的,並不適合在擴充套件中方便的使用,一般都要提前轉換成c或cpp中的資料型別。首先看乙個轉換的例子 convert to vector const zval vals,vector string vallist...
php物件陣列轉陣列 php物件轉陣列的函式
關於php中想讓物件以陣列的形式訪問,這時候就需要使用到get object vars 函式了。先來介紹一下這個函式。官方文件是這樣解釋的 array get object vars object obj 返回由 obj 指定的物件中定義的屬性組成的關聯陣列。舉例 setlabel point 1 ...