zoukankan      html  css  js  c++  java
  • 【SPL标准库专题(9)】 Datastructures: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

  • 相关阅读:
    几种归一化方法的概念及python实现
    python 中几种基本的矩阵操作应用
    exec 命令简单用法 和 find 搭配用法示例
    使用git在github上创建新工程
    gcc编译参数详解概述
    此心不明,能有何为
    多个文件目录下Makefile的写法
    《高效能程序员的修炼》读后思考之写作的重要性
    音频格式RAW和PCM区别和联系
    SWIG 基本概念和入门
  • 原文地址:https://www.cnblogs.com/nixi8/p/5433904.html
Copyright © 2011-2022 走看看