首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Access >

ArrayAccess 创造一个类数组对象

2012-08-25 
ArrayAccess 创建一个类数组对象PS:原创文章,如需转载,请注明出处,谢谢!???? 本文地址:http://flyer0126.i

ArrayAccess 创建一个类数组对象

PS:原创文章,如需转载,请注明出处,谢谢!????

本文地址:http://flyer0126.iteye.com/blog/1502576

?

/** * 单例模式实现类-->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(); //jackecho $s["name"]; //mikeprint_r($s);/**Single Object(    [name:Single:private] => jack    [container] => Array        (            [name] => mike        ))**/

?

后述:
ArrayAccess(数组式访问)接口 提供像访问数组一样访问对象的能力的接口。
OO实现逻辑的封装,而当这种封装对我们已有的逻辑调用方式产生变更时,可以利用这种方式进行巧妙转变。

?

热点排行