这段代码是一个例子。通过使用这样的类,你可以创建扩展另一个类但拥有大部分ArrayObject扩展类能力(如多重继承)的类。
<?php
class foo
{
public $foo = 'foo';
} class foobar extends foo implements ArrayAccess,IteratorAggregate,Countable
{
public function offsetExists($offset)
{
$array = array(1, 2, 3, 4);
return array_key_exists($offset, $array);
}
public function offsetGet($offset)
{
$array = array(1, 2, 3, 4);
return $array[$offset];
}
public function offsetSet($offset, $value)
{
}
public function offsetUnset($offset)
{
}
function count()
{
$array = array(1, 2, 3, 4);
return count($array);
} function getArray()
{
return array(1, 2, 3, 4);
} function getIterator()
{
return new ArrayIterator(array(1, 2, 3, 4));
} function __toString()
{
return 'String test';
} } $foobar = new foobar();
print $foobar[0].'<br/>';
print $foobar->foo.'<br/>';
print count($foobar).'<br/>';
foreach ($foobar as $k=>$v)
{
print $k.'=>'.$v.'<br/>';
} var_dump($foobar->getArray());
print $foobar;
?>
为了正确使用,你必须定义除了getArray()之外的所有这些方法。
浏览SPL的源代码将非常有帮助。
ps.: 对不起,我的英语不好