php中使用Iterator,ArrayAccess和Countable
来源:TOP博客整理
发布时间:2019-10-28 17:28:08
阅读:
迭代器往往被我们用来在数据库中读取大量的数据时方便数据的管理。
<?php
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]);
}
}
使对象中的数据可以像数组一样访问
<?php
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);
使对象可以对属性进行计数
<?php
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);