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();