arrayaccess 是php標準庫(spl)提供的乙個介面,這意味著我們可以直接呼叫,該介面使得對物件的訪問像陣列一樣。
介面的形式大概類似於如下:
inte***ce
arrayaccess
class
test
implements
arrayaccess
public
function
offsetset
($key, $val)
public
function
offsetexists
($key)
public
function
offsetunset
($key)
public
function
offsetget
($key)
}$test = new test;
echo
$test['name']; //自動呼叫 offsetget()
$test['phone'] = 123456; //自動呼叫 offsetset()
echo
$test['phone'];
if(!isset($test['leader']))
有同學會問,像上面這種情況,php會不會自動的生成乙個 te
st陣列
來儲存這
些值,而
不是原來
的那個 test 物件?
我們可以用 var_dump() 函式來看看它的介面嘛!
var_dump($test);
返回的是:
看到沒有,現在 te
st還是
乙個物件
,而且我
們後面設
置的test[『phone』] 也進入了該物件內。
使用過 php 框架的同學應該對框架的配置檔案印象很深刻吧,那些配置檔案就是乙個陣列,然後實現配置檔案的自動載入,接下來我們模仿一下該行為:
我們建立檔案 config.php
class
config
implements
arrayaccess
//獲取陣列的key
function
offsetget
($key)
return
$this->configs[$key];
}//設定陣列的key
function
offsetset
($key, $val)
//檢測key是否存在
function
offsetexists
($key)
//刪除陣列的key
function
offsetunset
($key)
}
我們在 config.php 所在目錄下 新建目錄 configs ,並在configs 目錄下新建檔案 database.php,**如下:
<?php
$config = array(
'mysql' => array(
'type' => 'mysql',
'host' => '127.0.0.1',
'user' => 'root',
'password' => 'root',
'dbname' => 'test',
),'sqlite' => array(
//...
),);
return
$config;
?>
使用配置:
成功獲取到配置檔案中的內容
本部落格參考自php arrayaccess(陣列式訪問)介面
慕課網
PHP中Array關於陣列的用法
使用函式array keys 得到陣列中所有的鍵,引數 陣列 arr array arr one one arr two two arr three three newarr array keys arr print r newarr array 0 one 1 two 2 three 使用函式ar...
PHP介面訪問頻率限制
發現網上很多限制都只是1分鐘 或者某個時間 內訪問的限制 比如1分鐘限制10次 那我在59秒的訪問了10次,然後key 又過期了,接下來1分鐘又可以訪問了 這種限制根本就不合理 所以有了我的想法 直接上 吧 param uid return bool int 檢測使用者介面訪問頻率 function...
php擴充套件 如何訪問php陣列
在php擴充套件中,時常需要接受php型別的陣列作為引數,php陣列的引數都是zval型別的,並不適合在擴充套件中方便的使用,一般都要提前轉換成c或cpp中的資料型別。首先看乙個轉換的例子 convert to vector const zval vals,vector string vallist...