(PHP 5 >= 5.4.0, PHP 7)
SplObjectStorage::getHash — Вычисляет уникальный идентификатор для объектов контейнера
$object
) : stringЭтот метод вычисляет уникальный идентификатор для объектов добавляемых в контейнер SplObjectStorage.
Реализация 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";
?>
Результатом выполнения данного примера будет что-то подобное:
2 3