中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在PHP中使用ArrayAccess實現一個數組式訪問接口

發布時間:2021-04-01 17:39:49 來源:億速云 閱讀:185 作者:Leah 欄目:開發技術

怎么在PHP中使用ArrayAccess實現一個數組式訪問接口?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

PHP  ArrayAccess接口又叫數組式訪問接口,該接口的作用是提供像訪問數組一樣訪問對象的能力。

接口摘要如下:

ArrayAccess {
  // 獲取一個偏移位置的值
  abstract public mixed offsetGet ( mixed $offset )
  // 設置一個偏移位置的值
  abstract public void offsetSet ( mixed $offset , mixed $value )
  // 檢查一個偏移位置是否存在
  abstract public boolean offsetExists ( mixed $offset )
  // 復位一個偏移位置的值
  abstract public void offsetUnset ( mixed $offset )
}

例子說明:

<?php
/**
* ArrayAndObjectAccess
* 該類允許以數組或對象的方式進行訪問
*
* @author 瘋狂老司機
*/
class ArrayAndObjectAccess implements ArrayAccess {
  /**
   * 定義一個數組用于保存數據
   *
   * @access private
   * @var array
   */
  private $data = [];
  /**
   * 以對象方式訪問數組中的數據
   *
   * @access public
   * @param string 數組元素鍵名
   */
  public function __get($key) {
    return $this->data[$key];
  }
  /**
   * 以對象方式添加一個數組元素
   *
   * @access public
   * @param string 數組元素鍵名
   * @param mixed 數組元素值
   * @return mixed
   */
  public function __set($key,$value) {
    $this->data[$key] = $value;
  }
  /**
   * 以對象方式判斷數組元素是否設置
   *
   * @access public
   * @param 數組元素鍵名
   * @return boolean
   */
  public function __isset($key) {
    return isset($this->data[$key]);
  }
  /**
   * 以對象方式刪除一個數組元素
   *
   * @access public
   * @param 數組元素鍵名
   */
  public function __unset($key) {
    unset($this->data[$key]);
  }
  /**
   * 以數組方式向data數組添加一個元素
   *
   * @access public
   * @abstracting ArrayAccess
   * @param string 偏移位置
   * @param mixed 元素值
   */
  public function offsetSet($offset,$value) {
    if (is_null($offset)) {
      $this->data[] = $value;
    } else {
      $this->data[$offset] = $value;
    }
  }
  /**
   * 以數組方式獲取data數組指定位置元素
   *
   * @access public
   * @abstracting ArrayAccess
   * @param 偏移位置
   * @return mixed
   */
  public function offsetGet($offset) {
    return $this->offsetExists($offset) ? $this->data[$offset] : null;
  }
  /**
   * 以數組方式判斷偏移位置元素是否設置
   *
   * @access public
   * @abstracting ArrayAccess
   * @param 偏移位置
   * @return boolean
   */
  public function offsetExists($offset) {
    return isset($this->data[$offset]);
  }
  /**
   * 以數組方式刪除data數組指定位置元素
   *
   * @access public
   * @abstracting ArrayAccess
   * @param 偏移位置
   */
  public function offsetUnset($offset) {
    if ($this->offsetExists($offset)) {
      unset($this->data[$offset]);
    }
  }
}
$animal = new ArrayAndObjectAccess();
$animal->dog = 'dog'; // 調用ArrayAndObjectAccess::__set
$animal['pig'] = 'pig'; // 調用ArrayAndObjectAccess::offsetSet
var_dump(isset($animal->dog)); // 調用ArrayAndObjectAccess::__isset
var_dump(isset($animal['pig'])); // 調用ArrayAndObjectAccess::offsetExists
var_dump($animal->pig); // 調用ArrayAndObjectAccess::__get
var_dump($animal['dog']); // 調用ArrayAndObjectAccess::offsetGet
unset($animal['dog']); // 調用ArrayAndObjectAccess::offsetUnset
unset($animal->pig); // 調用ArrayAndObjectAccess::__unset
var_dump($animal['pig']); // 調用ArrayAndObjectAccess::offsetGet
var_dump($animal->dog); // 調用ArrayAndObjectAccess::__get
?>

以上輸出:

boolean true
boolean true
string 'pig' (length=3)
string 'dog' (length=3)
null
null

關于怎么在PHP中使用ArrayAccess實現一個數組式訪問接口問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

利辛县| 饶阳县| 广安市| 三原县| 安庆市| 射阳县| 会宁县| 广南县| 土默特右旗| 新乐市| 泾阳县| 育儿| 甘南县| 星座| 蒲城县| 蓬莱市| 孝昌县| 临泉县| 九龙城区| 广河县| 顺平县| 胶南市| 卢龙县| 宁武县| 文化| 彝良县| 泗洪县| 嘉禾县| 辰溪县| 阿城市| 六盘水市| 修武县| 阿巴嘎旗| 贡觉县| 中超| 泰州市| 新宁县| 寻甸| 武义县| 新建县| 钟山县|