以前对ArrayAccess不是很熟悉,现在整理下下有关ArrayAccess相关的知识,ArrayAccess接口就是提供像访问数组一样访问对象的能力的接口。
接口内容如下:
ArrayAccess { //检查一个偏移位置是否存在 abstract html' target='_blank'>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 ); }
项目中使用,获取网站配置:
?phpnamespace lib;use mpf/core/Di;class config implements /ArrayAccess{//定义存储数据的数组 protected $configs; public function __construct($configs){ $this- configs = $configs; $configs = /lib/model/Home::getWebConfig(); foreach( $configs as $config ){ if( !isset($this- configs[$config[ sc_key ]]) ){ $this- configs[$config[ sc_key ]] = $config[ sc_content public function get($key){ if( isset($this- configs[$key]) ){ return $this- configs[$key]; }elseif( $key == caipiao ){ $this- configs[ caipiao ] = /lib/model/Home::getLcs(); return $this- configs[$key]; }elseif( $key == user_money ){ if( isset($_SESSION[ uid ]) ){ if( $_SESSION[ utype ] == 5 ){ $sql = select money from inner_user where uid=? }else{ $sql = select money from user where uid=? $this- configs[ user_money ] = /mpf/core/Di::$Di- db- prepare_query($sql,[getUid()])- fetch(/PDO::FETCH_COLUMN); return $this- configs[ user_money public function offsetExists($index){ return isset($this- configs[$index]); public function offsetGet($index){ return $this- configs[$index]; public function offsetSet($index,$val){ $this- configs[$index] = $val; public function offsetUnset($index){ unset($this- configs[$index]);}
这样可以使用config对象来直接访问配置信息内容。
配置程序:
我们可以通过ArrayAccess利用配置文件来控制程序。
1. 在项目更目录下创建一个config目录
2. 在config目录下创建相应的配置文件,比如app.php 和 database.php。文件程序如下
app.php
?phpreturn [ name = app name , version = v1.0.0 ];
database.php
?phpreturn [ mysql = [ host = localhost , user = root , password = 12345678 ];
3. Config.php实现ArrayAccess
?phpnamespace Config;class Config implements /ArrayAccess private $config = []; private static $instance; private $path; private function __construct() $this- 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 文件的 nameecho $config[ app ][ name ].PHP_EOL; //app name//获取database.php文件mysql的user配置echo $config[ database ][ mysql ][ user ].PHP_EOL; // root
相关教程:PHP视频教程
以上就是PHP数组式访问-ArrayAccess示例解析的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答