• 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'];
  • 相关阅读:
    java 求两个数最大值
    java 加法运算
    javs switch 语句
    git合并分支成功,但是push失败(remote: GitLab: You are not allowed to push code to protected branches on this project.)
    python 获取日期以及时间
    1713
    linux shell脚本中的延时
    java 类的继承
    Python3 使用企业微信 API 发送消息
    java if 条件语句
  • 原文地址:https://www.cnblogs.com/phpfans/p/4307204.html
Copyright © 2020-2023  润新知