Класс SplObjectStorage
(PHP 5 >= 5.1.0, PHP 7)
Введение
Класс SplObjectStorage предоставляет отображение объектов в данные или набор объектов, игнорируя данные. Эта двойная цель может быть полезна во многих случаях, включая необходимость уникальной идентификации объектов.
Обзор классов
/* Методы */
}Примеры
Пример #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] = "данные для объекта 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 — Удаляет объект object из контейнера
- SplObjectStorage::getHash — Вычисляет уникальный идентификатор для объектов контейнера
- SplObjectStorage::getInfo — Возвращает данные, ассоциированные с текущим объектом
- SplObjectStorage::key — Возвращает индекс текущего положения итератора
- SplObjectStorage::next — Переход к следующему объекту
- SplObjectStorage::offsetExists — Проверяет, существует ли объект в контейнере
- SplObjectStorage::offsetGet — Возвращает данные, ассоциированные с объектом object
- SplObjectStorage::offsetSet — Ассоциирует данные с объектом в контейнере
- SplObjectStorage::offsetUnset — Удаляет объект из контейнера
- SplObjectStorage::removeAll — Удаляет из текущего контейнера объекты, которые есть в другом контейнере
- SplObjectStorage::removeAllExcept — Удаляет из текущего контейнера все объекты, которых нет в другом контейнере
- SplObjectStorage::rewind — Переводит итератор на первый элемент контейнера
- SplObjectStorage::serialize — Сериализует контейнер
- SplObjectStorage::setInfo — Ассоциирует данные с текущим объектом контейнера
- SplObjectStorage::unserialize — Восстанавливает сериализованый контейнер из строки
- SplObjectStorage::valid — Определяет, допустимо ли текущее значение итератора