La classe SplObjectStorage

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

Introduction

La classe SplObjectStorage fournit une carte d'objets ou de données, ou encore, en ignorant les index, un ensemble d'objets. Ce double objectif est utile dans de nombreuses situations, où il faut identifier de manière unique des objets.

Exemples

Exemple #1 Exemple avec SplObjectStorage, sous forme d'ensemble d'objets

<?php
// Un ensemble d'objets
$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));
?>

L'exemple ci-dessus va afficher :

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

Exemple #2 Exemple avec SplObjectStorage, sous forme de carte

<?php
// Une carte d'objets
$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]);
}
?>

L'exemple ci-dessus va afficher :

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

Historique

Version Description
8.4.0 Implémente SeekableIterator, auparavant seule l’interface Iterator était implémentée.

Sommaire