Countable接口
类实现 Countable 接口,类实例就可以用count()函数
特别注意:类中必须有count公共方法,否则会报错。如果数值超过PHP_INT_MAX,返回值会有出入
class CountMe implements Countable {
protected $_myCount = 3;
public function count() {
return $this->_myCount;
}
}
$countable = new CountMe();
echo count($countable); //result is "3"
ArrayAccess(数组式访问)接口
提供像访问数组一样访问对象的能力的接口。
类中以下方法必须实现
ArrayAccess::offsetExists — 检查一个偏移位置是否存在
ArrayAccess::offsetGet — 获取一个偏移位置的值
ArrayAccess::offsetSet — 设置一个偏移位置的值
ArrayAccess::offsetUnset — 复位一个偏移位置的值
JsonSerializable接口
实现了这个接口的类, 需要定义一个jsonSerialize()方法, 这个方法会在对这个类的对象做json_encode的时候被调用
class Man implements JsonSerializable {
private $a, $b;
public function __construct($a, $b) {
$this->a = $a; $this->b = $b;
}
public function jsonSerialize(){
return $this->a + $this->b;
}
}
echo json_encode(new Man (23, 42));// 输出65