PHP几个接品 ArrayAccess, Iterator Countable 简单

echo "PHP几个接品 ArrayAccess, Iterator Countable<BR><BR>";
echo "<h1>Countable</h1>";
/*abstract public int count(void)
{
}*/
class MyCounter implements Countable
{
	function count()
	{
		static $count = 0;
		return ++$count;
	}
	public function count2()
	{
		static $count2 = 0;
		return ++$count2;
	}
}

$count = new MyCounter();
for($i=0; $i<6; $i++)
{
	echo "\n this counter is :".count($count)."<BR>";
	//echo "\n this counter is :".count($count2)."<BR>";
}
//实现对类的count,但实际的用处并不是很清楚,其实意思也不太明白了,
//莫法上网莫法查啊
echo "<h1>ArrayAccess</h1>";
/*ArrayAccess
{
	abstract public boolean offsetExists (string $offset);
	abstract public mixed offsetGet(string $offset);
	abstract public void offsetSet(string $offset, string $value);
	abstract public void offsetUnset(string $offset);
}*/
class obj implements ArrayAccess
{
	private $contain = array();

	function __construct()
	{
		$this->contain = array('gao'=>'gao','song'=>'song');
	}

	
	function __destruct()
	{
		unset($this->contain);
	}

	public function offsetExists($offset)
	{
		return isset($this->contain[$offset]) ? TRUE:FALSE;
	}

	public function offsetGet($offset)
	{
        return isset($this->contain[$offset]) ? $this->contain[$offset] : null;
	}

	public function offsetSet($offset,$value)
	{
        $this->contain[$offset] = $value;
	}

	public function offsetUnset($offset)
	{
		unset($this->contain[$offset]);
	}
}

$obj = new obj();
$obj['name'] = 'xlc';
$obj['sex'] = '男';
echo $obj['name']." ".$obj['sex'];
echo "<BR><BR>";
//实现对类的取值赋值等操作

echo "<h1>Iterator</h1>";
//Traversable{}
/*Iterator extends Traversable
{
	abstract public mixed current(void);
	abstract public scalar key(void);
	abstract public void next(void);
	abstract public void rewind(void);
	abstract public boolean valid(void);
}*/
class MyIterator implements Iterator
{
	private $index = 0;
	private $configtion = array('one','two','three');

	function __construct()
	{
		$this->index = 0;
	}

	function __destruct()
	{
		unset($this->configtion);
	}

	public function current()
	{
		return $this->configtion[$this->index];
	}

	public function key()
	{
		return $this->index;
	}

	public function next()
	{
		return ++$this->index;
	}

	public function rewind()
	{
		$this->index = 0;
	}

	public function valid()
	{
		return isset($this->configtion[$this->index]) ? TRUE : FALSE;
	}
}

$it = new MyIterator();
foreach($it as $key=>$val)
{
    echo "\n======{$key}===={$val}<BR>";
}
$it->rewind();
echo $it->key();
echo $it->current();

  

原文地址:https://www.cnblogs.com/xiangxiaodong/p/3055642.html