什么是SPL?
SPL是Standard PHP Library的缩写,属于PHP标准库的一支,是PHP5最新增加的功能,用来解决一些PHP语言本身不支持的问题以及实现更有效的数据的操作。
数组接口ArrayAccess--赋值、取值、删除、判断是否为空
数组的特性非常强大,如果对象可以使用数组的特性,将非常方便。
使用的方法类似于PHP5的魔术方法,对象通过定义相应的魔术方法可以实现一个数组接口,从而使用数组的特性。
需要定义的四种魔术方法:boolean offsetExists($index) //调用数组判断是否配置索引isset方法
mixed offsetGet($index) //使用数组索引读取方法
void offsetSet($index, $newvalue) //使用数组索引赋值方法
void offsetUnset($index) //使用数组删除索引和值unset方法
使用例子:<?php
/*
* 测试ArrayAccess接口
* echo __METHOD__."\n";调用时输出调用方法,方便跟踪
*
*/
class FakeArray implements ArrayAccess {
private $elements;
public function __construct() {
echo __METHOD__."\n";
$this->elements=array();
}
public function offsetExists($offset) {
echo __METHOD__."\n";
return isset($this->elements[$offset]);
}
public function offsetGet($offset) {
echo __METHOD__."\n";
return $this->elements[$offset];
}
public function offsetSet($offset,$value) {
echo __METHOD__."\n";
$this->elements[$offset]=$value;
}
public function offsetUnset($offset) {
echo __METHOD__."\n";
unset($this->elements[$offset]);
}
}
//使用
$exam=new FakeArray;
$exam['a']='test';
if (isset($exam['a']) && $exam['a']=='test') {
echo "\$exam['a'] is set as 'test' now.\n";
}
unset($exam['a']);
if (! isset($exam['a'])) {
echo "\$exam['a'] is unset now.\n";
}
?>