php中使用Iterator,ArrayAccess和Countable 【转】
版权声明:
本文为博主学习过程中整理发布,如有侵权请告知
更新时间:
2019-06-17 17:14:01
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
Iterator
迭代器往往被我们用来在数据库中读取大量的数据时方便数据的管理。
class Basket implements Iterator{ private $fruits = array('apple', 'banna', 'pear', 'orange', 'watermelon'); private $position = 0; //返回当前的元素 public function current(){ return $this->fruits[$this->position]; } //返回当前的键 public function key(){ return $this->position } //下移一个元素 public function next(){ ++$this->position; } //移动到第一个元素 public function rewind(){ $this->position = 0; } //判断后续是否还有元素 public function valid(){ return isset($this->fruits[$this->position+1]); } }
ArrayAccess
使对象中的数据可以像数组一样访问
class obj implements ArrayAccess{ private $container = array(); public function __construct(){ $this->container = array( "one" => 1, "two" => 2, "three" => 3 ); } //赋值 public function offsetSet($offset, $value){ if(is_null($offset)){ $this->container[] = $value; } else { $this->container[$offset] = $value; } } //某键是否存在 public function offsetExists($offset){ return isset($this->container[$offset]); } //删除键值 public function offsetUnset($offset){ unset($this->container[$offset]); } //获取键对应的值 public function offsetGet($offset){ return isset($this->container[$offset])?$this->container[$offset]:null; } } $obj = new obj(); var_dump(isset($obj["two"])); var_dump($obj["two"]); unset($obj["two"]); var_dump(isset($obj["two"])); $obj['two'] = "A value"; var_dump($obj['two']); echo $obj['two']; $obj[] = 'Append 1'; $obj[] = 'Append 2'; $obj[] = 'Append 3'; var_dump($obj);
Countable
使对象可以对属性进行计数
class Basket implements Countable{ private $fruits = array('apple', 'banna', 'pear', 'orange', 'watermelon'); public function count(){ return count($this->fruits); } } $basket = new Basket(); echo count($basket);