
描述
The SplObjectStorage class provides a map from objects to data or, by ignoring data, an object set. This dual purpose can be useful in many cases involving the need to uniquely identify objects.
实例
class A
{
public $i;
public function __construct ($i)
{
$this->i = $i;
}
}
$a1 = new A(1);
$a2 = new A(2);
$a3 = new A(3);
$container = new SplObjectStorage();
//SplObjectStorage::attach 添加对象到Storage中
$container->attach($a1);
$container->attach($a2);
//SplObjectStorage::detach 将对象从Storage中移除
$container->attach($a2);
var_dump($container);
//SplObjectStorage::contains用于检查对象是否存在Storage中
var_dump($container->contains($a1)); //true
var_dump($container->contains($a4)); //false
//遍历
$container->rewind();
while ($container->valid()) {
var_dump($container->current());
$container->next();
}
// As a map from objects to data
$s = new SplObjectStorage();
$o1 = new StdClass;
$o2 = new StdClass;
$o3 = new StdClass;
$s[$o1] = "data for object 1";
$s[$o2] = [1, 2, 3];
if (isset($s[$o2])) {
var_dump($s);
var_dump($s[$o2]);
}
//输出结果
class SplObjectStorage#1 (1) {
private $storage =>
array(2) {
'000000000e726c4600000000698e987d' =>
array(2) {
'obj' =>
class stdClass#2 (0) {
...
}
'inf' =>
string(17) "data for object 1"
}
'000000000e726c4700000000698e987d' =>
array(2) {
'obj' =>
class stdClass#3 (0) {
...
}
'inf' =>
array(3) {
...
}
}
}
}
/Users/shuo/w3c/test/spl/splObjectStorage.php:15:
array(3) {
[0] =>
int(1)
[1] =>
int(2)
[2] =>




近期评论