【SPL标准库专题(9)】 Datastructures:SplObjectStorage

本文深入探讨了PHP SPL SplObjectStorage类的使用,包括如何添加、检查、移除对象,以及实现统计、迭代、序列化和数组式访问等功能。通过实例展示了其在实际开发中的应用。

PHP SPL SplObjectStorage是用来存储一组对象的,特别是当你需要唯一标识对象的时候。
PHP SPL SplObjectStorage类实现了Countable,Iterator,Serializable,ArrayAccess四个接口。可实现统计、迭代、序列化、数组式访问等功能。

类摘要

SplObjectStorage implements Countable , Iterator , Serializable , ArrayAccess {
    /* 方法 */
    public void addAll ( SplObjectStorage $storage )
    // ↓↓加入对象
    public void attach ( object $object [, mixed $data = NULL ] )
    // ↓↓检查是否包含指定对象
    public bool contains ( object $object )
    // ↓↓移除对象
    public void detach ( object $object )
    // ↓↓返回一串哈希值,每次调用的时候该串哈希值都在改变
    public string getHash ( object $object )
    public mixed getInfo ( void )
    public int count ( void )
    public object current ( void )
    public int key ( void )
    public void next ( void )
    public bool offsetExists ( object $object )
    public mixed offsetGet ( object $object )
    public void offsetSet ( object $object [, mixed $data = NULL ] )
    public void offsetUnset ( object $object )
    public void removeAll ( SplObjectStorage $storage )
    public void removeAllExcept ( SplObjectStorage $storage )
    public void rewind ( void )
    public string serialize ( void )
    public void setInfo ( mixed $data )
    public void unserialize ( string $serialized )
    public bool valid ( void )
}

Example

# Example1:
class A {
  public $i;
  public function __construct($i) {
    $this->i = $i;
  }
}

$a1 = new A(1);
$a2 = new A(2);
$a3 = new A(3);
$a4 = new A(4);

$container = new SplObjectStorage();

//SplObjectStorage::attach 添加对象到Storage中
$container->attach($a1);
$container->attach($a2);
$container->attach($a3);

//SplObjectStorage::detach 将对象从Storage中移除
$container->detach($a2);

//SplObjectStorage::contains用于检查对象是否存在Storage中
var_dump($container->contains($a1)); //true
var_dump($container->contains($a4)); //false

//遍历
$container->rewind();
while($container->valid()) {
  var_dump($container->current());
  var_dump($container->getInfo());
  $container->next();
}

参考

http://php.net/manual/zh/class.splobjectstorage.php

转载于:https://www.cnblogs.com/nixi8/p/5433904.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值