浏览 2001 次
锁定老帖子 主题:ArrayAccess 创建一个类数组对象
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-27
PS:原创文章,如需转载,请注明出处,谢谢! 本文地址:http://flyer0126.iteye.com/blog/1502504
/** * 单例模式实现类-->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 ) ) **/
后述:
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-04-28
的确,php下还是ArrayAccess方式访问对象比较受欢迎
|
|
返回顶楼 | |