91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么在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

稻城县| 兰州市| 灵武市| 吴桥县| 文昌市| 滁州市| 泽州县| 社会| 肃南| 遵化市| 陆川县| 康保县| 谷城县| 鄂托克旗| 永胜县| 偏关县| 剑川县| 晋中市| 莱西市| 安新县| 晋城| 云梦县| 工布江达县| 新建县| 五河县| 邵武市| 五常市| 邹平县| 兰西县| 喀喇沁旗| 清水县| 丹江口市| 鹤峰县| 肥西县| 高阳县| 毕节市| 美姑县| 广平县| 临桂县| 井陉县| 新津县|