PHPのArrayAccessインターフェースを継承すると、配列形式でアクセスできるクラスを作成できます。
実装しなければならないメソッドは次の1つです。
/**
* オフセットが存在するかどうか
* @param offset 調べたいオフセット
* @return 成功した場合に TRUE を、失敗した場合に FALSE を返します。
*/
public boolean offsetExists ( mixed $offset )
/**
* オフセットを取得する
* @param offset 調べたいオフセット
* @return 指定したオフセットの値
*/
public mixed offsetGet ( mixed $offset )
/**
* オフセットを設定する
* @param offset 調べたいオフセット
* @param value 設定したい値
*/
public void offsetSet ( mixed $offset , mixed $value )
/**
* オフセットの設定を解除する
* @param offset 設定解除したいオフセット
*/
public void offsetUnset ( mixed $offset )
サンプルコード
class PrefecturalCapital implements ArrayAccess
{
private $values;
public function __construct()
{
$this->values = array('京都府'=>'京都市',
'大阪府'=>'大阪市',
'兵庫県'=>'神戸市',
'奈良県'=>'奈良市');
}
//オフセットが存在するかどうか
public function offsetExists($offset) {
return isset($this->values[$offset]);
}
//オフセットを取得する
public function offsetGet($offset) {
if (isset($this->values[$offset])) {
return $this->values[$offset];
}
return null;
}
//オフセットを設定する
public function offsetSet($offset, $value) {
$this->values[$offset] = $value;
}
//オフセットの設定を解除する
public function offsetUnset($offset) {
unset($this->values[$offset]);
}
}
$capital = new PrefecturalCapital();
var_dump(isset($capital['大阪府'])); //=>true
var_dump($capital['大阪府']); //=>大阪市
unset($capital['大阪府']);
var_dump($capital['大阪府']); //=>null
$capital['三重県'] = '津市';
var_dump($capital['三重県']); //=>津市