zoukankan      html  css  js  c++  java
  • PHP的ArrayAccess接口介绍

    在 PHP5 中多了一系列新接口。在 HaoHappy 翻译的你可以了解到他们的应用。同时这些接口和一些实现的 Class 被归为 Standard PHP Library(SPL)。在 PHP5 中加入了很多特性,使类的重载 (Overloading) 得到进一步的加强。ArrayAccess 的作用是使你的 Class 看起来像一个数组(PHP 的数组)。这点和 C# 的 Index 特性很相似。

    下面是 ArrayAccess 的定义:

    interface ArrayAccess

    • boolean offsetExists($index)

    • mixed offsetGet($index)

    • void offsetSet($index, $newvalue)

    • void offsetUnset($index)

    由于PHP的数组的强大,很多人在写 PHP 应用的时候经常将配置信息保存在一个数组里。于是可能在代码中到处都是 global。我们换种方式?

    class Configuration implements ArrayAccess {
    
        static private $config;
        private $configarray;
    
        private function __construct() {
            // init
            $this->configarray = array("Binzy" => "Male", "Jasmin" => "Female");
        }
    
        public static function instance() {
            //
            if (self::$config == null) {
                self::$config = new Configuration();
            }
            return self::$config;
        }
        //检查一个偏移位置是否存在
        function offsetExists($index) {
            return isset($this->configarray[$index]);
        }
        //获取一个偏移位置的值
        function offsetGet($index) {
            return $this->configarray[$index];
        }
        //设置一个偏移位置的值
        function offsetSet($index, $newvalue) {
            $this->configarray[$index] = $newvalue;
        }
        //复位一个偏移位置的值
        function offsetUnset($index) {
            unset($this->configarray[$index]);
        }
    
    }
    
    $config = Configuration::instance();
    print_r($config);
    echo "<br/>";
    echo $config['Binzy'];
    echo "<br/>";
    $config['Binzy'] = '1222';
    echo $config['Binzy'];
  • 相关阅读:
    [Cloud Architect] 12. Defensive Security in the Cloud
    [SAP] 38. Database Migration Service
    [Cloud Architect] 11. Protecting Data Stored in the Cloud
    [SAP] 37. Snow family
    [SAP] 36. Storage getway
    JAVA开发常见问题整理(持续更新)
    sdf1434 最少转弯
    sdf 2439 问题 A: 迷宫(广搜模板题)
    sdf1552
    小学生数据结构和基础算法
  • 原文地址:https://www.cnblogs.com/phpfans/p/4307204.html
Copyright © 2011-2022 走看看