首页 > 编程 > PHP > 正文

PHP数组式访问-ArrayAccess示例解析

2020-03-22 19:53:11
字体:
来源:转载
供稿:网友
本文章主要讲述了PHP中的数组式访问,具有一定参考价值,感兴趣的朋友可以了解一下,希望能帮助到你。

以前对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教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表