SplFixedArray::__wakeup
SplObjectStorage::addAll
データ構造
PHP Manual

# SplObjectStorage クラス

(PHP 5 >= 5.3.0)

## 導入

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

## クラス概要

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 int count ( void )
public object current ( void )
public void detach ( object `$object` )
public string getHash ( object `$object` )
public mixed getInfo ( 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 )
}

## 例

例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)
    }

## 目次

- SplObjectStorage::addAll — 別のストレージからすべてのオブジェクトを追加する
- SplObjectStorage::attach — オブジェクトをストレージに追加する
- SplObjectStorage::contains — ストレージに特定のオブジェクトが含まれるかどうかを調べる
- SplObjectStorage::count — ストレージ内のオブジェクトの数を返す
- SplObjectStorage::current — 現在のストレージの要素を返す
- SplObjectStorage::detach — オブジェクトをストレージから取り除く
- SplObjectStorage::getHash — 中に含むオブジェクトの一意な識別子を算出する
- SplObjectStorage::getInfo — イテレータの現在のエントリに関連づけられたデータを返す
- SplObjectStorage::key — イテレータの現在位置を返す
- SplObjectStorage::next — 次のエントリに移動する
- SplObjectStorage::offsetExists — オブジェクトがストレージ内に存在するかどうかを調べる
- SplObjectStorage::offsetGet — オブジェクトに関連づけられたデータを返す
- SplObjectStorage::offsetSet — ストレージ内のオブジェクトにデータを関連づける
- SplObjectStorage::offsetUnset — ストレージからオブジェクトを取り除く
- SplObjectStorage::removeAll — 別のストレージに含まれているオブジェクトを現在のストレージから取り除く
- SplObjectStorage::removeAllExcept — 別のストレージに含まれているもの以外のすべてのオブジェクトを現在のストレージから取り除く
- SplObjectStorage::rewind — イテレータをストレージの最初の要素に巻き戻す
- SplObjectStorage::serialize — ストレージをシリアライズする
- SplObjectStorage::setInfo — イテレータの現在のエントリに関連づけるデータを設定する
- SplObjectStorage::unserialize — ストレージの文字列表現をアンシリアライズする
- SplObjectStorage::valid — イテレータの現在のエントリが有効かどうかを返す

SplFixedArray::__wakeup
SplObjectStorage::addAll
データ構造
PHP Manual