SplObjectStorage::getHash
(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SplObjectStorage::getHash —
Вычисляет уникальный идентификатор для объектов контейнера
Описание
Реализация SplObjectStorage возвращает то же значение,
что и функция spl_object_hash().
В одном контейнере никогда не появится двух объектов с одинаковыми
идентификаторами. Таким образом, с помощью контейнера можно реализовать
множество (коллекцию значений, каждое из которых представлено в единственном
экземпляре), в котором уникальность объектов будет определяться этим
идентификатором.
Список параметров
-
object
-
Объект, чей идентификатор требуется вычислить.
Возвращаемые значения
Строка string с результатом вычисления.
Ошибки
Метод выбрасывает исключение RuntimeException, когда тип
возвращаемого значения не является строкой (string).
Примеры
Пример #1 Пример использования SplObjectStorage::getHash()
<?php
class OneSpecimenPerClassStorage extends SplObjectStorage {
public function getHash($o) {
return get_class($o);
}
}
class A {}
$s = new OneSpecimenPerClassStorage;
$o1 = new stdClass;
$o2 = new stdClass;
$o3 = new A;
$s[$o1] = 1;
//$o2 предполагается равным $o1, соответственно значение замещается
$s[$o2] = 2;
$s[$o3] = 3;
//предполагаем, что следующие объекты эквивалентны приведённым выше
//таким образом, их можно использовать для извлечения данных из контейнера
$p1 = new stdClass;
$p2 = new A;
echo $s[$p1], "\n";
echo $s[$p2], "\n";
?>
Вывод приведённого примера будет похож на: