php使用陣列語法訪問物件

2021-09-07 06:34:44 字數 1231 閱讀 5083

有乙個物件,不過希望能用陣列的語法來讀寫資料,可以使用 實現spl的arrayaccess介面來解決。

使用場景:載入配置檔案類。larvel框架載入配置檔案就這利用陣列來操作物件。

陣列式訪問object ,必須實現下面4個方法

/*

* offsetexists (指定乙個元素是否已定義)

* offsetget (獲取乙個元素的值)

* offsetset (將元素設定為乙個新值)

* offsetunset (刪除乙個元素及值)

*/

1

class 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 ...