• 技术文章 >后端开发 >php教程

    ArrayAccess 创建一个类数组对象

    巴扎黑巴扎黑2016-11-23 13:38:36原创1174

    /**

    * 单例模式实现类-->ArrayAccess(数组式访问)接口

    *

    * @author flyer0126

    * @since 2012/4/27

    */

    class Single{


    private $name;

    private static $_Instance = null;

    private function __construct()

    {

    }

    static function load()

    {

    if(null == self::$_Instance)

    {

    self::$_Instance = new Single();

    }

    return self::$_Instance;

    }

    public function setName($name)

    {

    $this->name = $name;

    }

    public function getName()

    {

    return $this->name;

    }

    }


    $s = Single::load();

    $s->setName("jack");

    echo $s->getName(); //jack


    // 调整一下(继承ArrayAccess && 实现4个方法)

    class Single implements ArrayAccess

    {


    private $name;

    private static $_Instance = null;

    private function __construct()

    {

    }

    static function load()

    {

    if(null == self::$_Instance)

    {

    self::$_Instance = new Single();

    }

    return self::$_Instance;

    }

    public function setName($name)

    {

    $this->name = $name;

    }

    public function getName()

    {

    return $this->name;

    }

    /**

    * 实现四个方法

    * offsetExists(),用于标识一个元素是否已定义

    * offsetGet(),用于返回一个元素的值

    * offsetSet(),用于为一个元素设置新值

    * offsetUnset(),用于删除一个元素和相应的值

    **/

    public function offsetSet($offset, $value)

    {

    if (is_null($offset))

    {

    $this->container[] = $value;

    }

    else

    {

    $this->container[$offset] = $value;

    }

    }


    public function offsetGet($offset)

    {

    return isset($this->container[$offset]) ? $this->container[$offset] : null;

    }


    public function offsetExists($offset)

    {

    return isset($this->container[$offset]);

    }


    public function offsetUnset($offset)

    {

    unset($this->container[$offset]);

    }

    }


    $s = Single::load();

    $s->setName("jack");


    $s["name"] = "mike";


    echo $s->getName(); //jack

    echo $s["name"]; //mike

    print_r($s);

    /**

    Single Object

    (

    [name:Single:private] => jack

    [container] => Array

    (

    [name] => mike

    )


    )

    **/


    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP 对象、数组间的转换 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 聊聊PHP escapeshellarg函数使用的中文问题• PHP原生类的总结分享• 分享PHP函数使用小工具(附代码示例)• PHP安全编码总结(经验分享)• 非常全面!PHP常见漏洞代码总结!
    1/1

    PHP中文网