執行個體詳解PHP數組式提供者ArrayAccess

來源:互聯網
上載者:User
本文主要介紹了PHP數組式提供者ArrayAccess用法,結合執行個體形式分析了數組式提供者ArrayAccess的概念、功能、實現與使用方法,需要的朋友可以參考下,希望能協助到大家。

本文執行個體講述了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::offsetSetvar_dump(isset($animal->dog)); // 調用ArrayAndObjectAccess::__issetvar_dump(isset($animal['pig'])); // 調用ArrayAndObjectAccess::offsetExistsvar_dump($animal->pig); // 調用ArrayAndObjectAccess::__getvar_dump($animal['dog']); // 調用ArrayAndObjectAccess::offsetGetunset($animal['dog']); // 調用ArrayAndObjectAccess::offsetUnsetunset($animal->pig); // 調用ArrayAndObjectAccess::__unsetvar_dump($animal['pig']); // 調用ArrayAndObjectAccess::offsetGetvar_dump($animal->dog); // 調用ArrayAndObjectAccess::__get?>

以上輸出:


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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.