Php/docs/class.splobjectstorage

提供:Dev Guides
< Php
移動先:案内検索

(PHP 5 >= 5.1.0, PHP 7)

はじめに

SplObjectStorage クラスは、オブジェクトをデータに対応させたり、 データを渡さずオブジェクトセットとして使用したりします。 これらはどちらも、オブジェクトを一意に特定したい場合に便利です。


クラス概要


SplObjectStorage implements Countable , Iterator , Serializable , ArrayAccess {

/* メソッド */

public addAll ( SplObjectStorage $storage ) : void

public attach ( object $object [, mixed $data = null ] ) : void

public contains ( object $object ) : bool

public count ( ) : int

public current ( ) : object

public detach ( object $object ) : void

public getHash ( object $object ) : string

public getInfo ( ) : mixed

public key ( ) : int

public next ( ) : void

public offsetExists ( object $object ) : bool

public offsetGet ( object $object ) : mixed

public offsetSet ( object $object [, mixed $data = null ] ) : void

public offsetUnset ( object $object ) : void

public removeAll ( SplObjectStorage $storage ) : void

public removeAllExcept ( SplObjectStorage $storage ) : void

public rewind ( ) : void

public serialize ( ) : string

public setInfo ( mixed $data ) : void

public unserialize ( string $serialized ) : void

public valid ( ) : bool

}

例1 SplObjectStorage をセットとして使用

<?php// オブジェクトセット$s = new SplObjectStorage();$o1 = new StdClass;$o2 = new StdClass;$o3 = new StdClass;$s->attach($o1);$s->attach($o2);var_dump($s->contains($o1));var_dump($s->contains($o2));var_dump($s->contains($o3));$s->detach($o2);var_dump($s->contains($o1));var_dump($s->contains($o2));var_dump($s->contains($o3));?>

上の例の出力は以下となります。


bool(true)
bool(true)
bool(false)
bool(true)
bool(false)
bool(false)

例2 SplObjectStorage をマップとして使用

<?php// オブジェクトとデータを対応させます$s = new SplObjectStorage();$o1 = new StdClass;$o2 = new StdClass;$o3 = new StdClass;$s[$o1] = "data for object 1";$s[$o2] = array(1,2,3);if (isset($s[$o2])) {    var_dump($s[$o2]);}?>

上の例の出力は以下となります。


array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

目次