Home>Article>Backend Development> PHP array access-ArrayAccess sample analysis

PHP array access-ArrayAccess sample analysis

little bottle
little bottle forward
2019-04-24 14:25:13 2796browse

This article mainly talks about array access in PHP, which has certain reference value. Interested friends can learn about it and hope it can help you.

I was not very familiar with ArrayAccess before. Now I will sort out the knowledge related to ArrayAccess. The ArrayAccess interface is an interface that provides the ability to access objects like accessing arrays.

The interface content is as follows:

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 ); }

Used in the project to obtain website configuration:

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]); } }

This can be used config object to directly access the configuration information content.

Configuration program:

We can use the configuration file to control the program through ArrayAccess.

1. Create a config directory in the project directory
2. Create corresponding configuration files, such as app.php and database.php, in the config directory. The file program is as follows

app.php

 'app name', 'version' => 'v1.0.0' ];

database.php

 [ 'host' => 'localhost', 'user' => 'root', 'password' => '12345678' ] ];

3. Config.php implements 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

Related tutorials:PHP video tutorial

The above is the detailed content of PHP array access-ArrayAccess sample analysis. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:cnblogs.com. If there is any infringement, please contact admin@php.cn delete