PHPのArrayAccessインターフェースを継承して配列形式でアクセスできるクラスを作成する

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['三重県']); //=>津市

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください