摘要:簡介數組式訪問接口提供像訪問數組一樣訪問對象的能力的接口。下面我帶你們一起看看我是這么實現的在項目更目錄下創建一個目錄在目錄下創建相應的配置文件,比如和。
簡介
ArrayAccess(數組式訪問)接口:提供像訪問數組一樣訪問對象的能力的接口。
提供接口ArrayAccess { //檢查一個偏移位置是否存在 abstract public boolean offsetExists ( mixed $offset ); //獲取一個偏移位置的值 abstract public mixed offsetGet ( mixed $offset ); //設置一個偏移位置的值 abstract public void offsetSet ( mixed $offset , mixed $value ); //復位一個偏移位置的值 abstract public void offsetUnset ( mixed $offset ); }
如果我們想像數組一樣來訪問你的PHP對象只需要實現ArrayAccess接口即可
實例運用場景:假如我有一個User類,映射的是用戶的信息,想通過數組的方式來訪問和設置用戶信息
data = [ "name" => "moell", "sex" => "男", "email" => "moell@gmail.com" ]; } /** * 檢查指定字段數據是否存在 * * @param $offset * @return bool */ public function offsetExists($offset) { return isset($this->data[$offset]); } /** * 獲取指定字段數據 * * @param $offset * @return mixed */ public function offsetGet($offset) { return $this->data[$offset]; } /** * 設置指定字段數據 * * @param $offset * @param $value * @return mixed */ public function offsetSet($offset, $value) { return $this->data[$offset] = $value; } /** * 刪除指定字段數據 * * @param $offset */ public function offsetUnset($offset) { unset($this->data[$offset]); } } $user = new User(); //獲取用戶的email echo $user["email"].PHP_EOL; // moell@gmail.com //檢查age是否存在 var_dump(isset($user["age"])); // bool(false) //設置age $user["age"] = 18; echo $user["age"].PHP_EOL; //18 //刪除age unset($user["age"]); var_dump(isset($user["age"])); // bool(false)
我們的對象可以像數組一樣操作了,是不是很神奇呢?
在我們構建應用中,經常會通過一個配置文件變更程序的一個行為,通過ArrayAccess我們會更輕松的實現。
下面我帶你們一起看看我是這么實現的
1. 在項目更目錄下創建一個config目錄
2. 在config目錄下創建相應的配置文件,比如app.php 和 database.php。文件程序如下
app.php
"app name", "version" => "v1.0.0" ];
database.php
[ "host" => "localhost", "user" => "root", "password" => "12345678" ] ];
3. Config.php實現ArrayAccess
path = __DIR__."/config/"; } public static function instance() { if (!(self::$instance instanceof Config)) { self::$instance = new Config(); } return self::$instance; } public function offsetExists($offset) { return isset($this->config[$offset]); } public function offsetGet($offset) { if (empty($this->config[$offset])) { $this->config[$offset] = require $this->path.$offset.".php"; } return $this->config[$offset]; } public function offsetSet($offset, $value) { throw new Exception("不提供設置配置"); } public function offsetUnset($offset) { throw new Exception("不提供刪除配置"); } } $config = Config::instance(); //獲取app.php 文件的 name echo $config["app"]["name"].PHP_EOL; //app name //獲取database.php文件mysql的user配置 echo $config["database"]["mysql"]["user"].PHP_EOL; // root
如果你給我一樣熱愛PHP,歡迎加入QQ群:339803849一起討論
聲明文章轉載說明出處,本文地址:http://moell.cn/article/29
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21993.html
摘要:提供了個常用的預定義接口,實現某些特定的能力。是啥如官方文檔所述,它提供像訪問數組一樣訪問對象的能力的接口。它提供了個接口我們實現這個接口,依次對應數組的讀取,設置,操作。用上了它,可以讓一個類即可以支持對象引用,也支持數組引用。 php提供了6個常用的預定義接口,實現某些特定的能力。其中最最常用的就是 ArrayAccess 了,像 Laravel 這種流行的框架都用到了它。 Arr...
摘要:我把分為五個部分,,,,而其中是就是做一些類的介紹與相關的類在各自文章內,在介紹這些類之前,先介紹幾個接口數組式訪問接口只要實現了這個接口,就可以使得像那樣操作。只有內部的類用寫的類才可以直接實現接口代碼中使用或接口來實現遍歷。 我把SPL分為五個部分:Iterator,Classes,Exceptions,Datastructures,Function;而其中classes是就是做一...
摘要:下邊是服務容器工作示意圖服務容器的產生框架中,服務容器是由中類完成的,該類實現了服務容器的核心功能。并不是框架中所有的類都能實現自動依賴注入的功能只有服務容器創建的類實例才能實現依賴自動注入。框架中的服務容器是全局的,不需要 1.服務容器 服務容器是Lumen框架整個系統功能調度配置的核心,它提供了整個框架運行過程中的一系列服務。服務容器就是提供服務(服務可以理解為系統運行中需要的東西...
摘要:也就是閑時為了寫文章而寫的一篇關于源碼的閱讀筆記。是標準庫的縮寫,一組旨在解決標準問題的接口和類的集合。提供了一套標準的數據結構,一組遍歷對象的迭代器,一組接口,一組標準的異常,一系列用于處理文件的類,提供了一組函數,具體可以查看文檔。 也就是閑時為了寫文章而寫的一篇關于 Pimple 源碼的閱讀筆記。Pimple 代碼有兩種編碼方式,一種是以 PHP 編寫的,另一種是以 C 擴展編寫...
摘要:通常調用一個類里面的方法需要如何操作依賴注入模式用來減少程序間的耦合依賴注入共有三種模式方法注入著重說下方法注入并結合單例注冊的服務數組訪問接口測試郵件發送成功方式訪問通過數組的方式訪問也是通過該方式實現依賴 通常調用一個類里面的方法需要如何操作: $class = new class();$class->fun() 依賴注入模式用來減少程序間的耦合 依賴注入共有三種模式: sette...
閱讀 1184·2021-11-22 13:54
閱讀 2435·2021-09-22 15:36
閱讀 2738·2019-08-30 15:54
閱讀 809·2019-08-30 15:53
閱讀 3172·2019-08-30 15:53
閱讀 518·2019-08-29 15:21
閱讀 2870·2019-08-28 18:28
閱讀 3015·2019-08-26 13:37