SplObjectStorage::offsetGet
(PHP 5 >= 5.3.0)
SplObjectStorage::offsetGet — Возвращает данные ассоциированные с объектом object
Описание
Возвращает данные ассоциированные с объектом object.
Возвращаемые значения
данные ассоциированные с объектом object.
Ошибки
Выбрасывает исключение UnexpectedValueException, если
объект object
не удалось найти.
Примеры
Пример #1 Пример использования SplObjectStorage::offsetGet()
<?php
$s = new SplObjectStorage;
$o1 = new StdClass;
$o2 = new StdClass;
$s[$o1] = "hello";
$s->attach($o2);
var_dump($s->offsetGet($o1)); // $s[$o1]
var_dump($s->offsetGet($o2)); // $s[$o2]
?>
Результатом выполнения данного примера будет что-то подобное:
string(5) "hello" NULL
Смотрите также
- SplObjectStorage::offsetSet() - Ассоциирует данные с объектом в контейнере
- SplObjectStorage::offsetExists() - Проверяет, существует ли объект в контейнере
- SplObjectStorage::offsetUnset() - Удаляет объект из контейнера
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Другие базовые расширения
- Стандартная библиотека PHP (SPL)
- Структуры данных
- Функция 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() - Определяет, допустимо ли текущее значение итератора
Коментарии
SplObjectStorage::offsetGet() can become EXTREMELY slow depending on the associated data (PHP 5.6).
<?php
// SplObjectStorage
$object = new stdClass;
$test = new SplObjectStorage;
$test->attach($object, str_repeat("\0", 1024*1024));
$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
$test->offsetGet($object);
}
var_dump(microtime(true) - $start); // 76 seconds!
// Array + spl_object_hash()
$object = new stdClass;
$test = [];
$test[spl_object_hash($object)] = str_repeat("\0", 1024*1024);
$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
$temp = $test[spl_object_hash($object)];
}
var_dump(microtime(true) - $start); // 0.3 seconds
The performance of SplObjectStorage in PHP7.0.7 has boosted a lot.
SplObjectStorage
double(1.3110690116882)
[object_hash => value]
double(2.4147419929504)