亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

句容市| 苗栗县| 竹溪县| 蚌埠市| 阆中市| 皮山县| 兴海县| 辉南县| 浦东新区| 剑阁县| 青河县| 隆尧县| 沙坪坝区| 莆田市| 开远市| 平阳县| 广南县| 靖江市| 鹤壁市| 大方县| 古浪县| 洪雅县| 论坛| 正定县| 通许县| 潜江市| 威远县| 贵阳市| 津市市| 万盛区| 娄底市| 交口县| 疏附县| 资中县| 南丰县| 怀仁县| 宁强县| 建宁县| 东乌珠穆沁旗| 忻城县| 榆树市|