SplObjectStorage::offsetSet
(PHP 5 >= 5.3.0)
SplObjectStorage::offsetSet — Associates data to an object in the storage
Description
Associate data to an object in the storage.
Note:
SplObjectStorage::offsetSet() is an alias of SplObjectStorage::attach().
Return Values
No value is returned.
Examples
Example #1 SplObjectStorage::offsetSet() example
<?php
$s = new SplObjectStorage;
$o1 = new StdClass;
$s->offsetSet($o1, "hello"); // Similar to $s[$o1] = "hello";
var_dump($s[$o1]);
?>
The above example will output something similar to:
string(5) "hello"
See Also
- SplObjectStorage::attach() - Adds an object in the storage
- SplObjectStorage::offsetGet() - Returns the data associated with an object
- SplObjectStorage::offsetExists() - Checks whether an object exists in the storage
- SplObjectStorage::offsetUnset() - Removes an object from the storage
- 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() - Определяет, допустимо ли текущее значение итератора
Коментарии
Although `offsetSet` is supposed to be an alias to `attach`, real-world results do not indicate that. When extending the SplObjectStorage class, it's expected that a modification to `attach` would also affect `offsetSet`. However, it seems they need to both be extended. Consider the results below...
<?php
declare(strict_types=1);
class CustomSplObjectStorage extends SplObjectStorage
{
public function offsetSet(mixed $object, mixed $info = null): void
{
print("offsetSet called\n");
parent::offsetSet($object, $info);
}
public function attach(mixed $object, mixed $info = null): void
{
print("attach called\n");
parent::attach($object, $info);
}
}
$a = new CustomSplObjectStorage();
$a[new stdClass()] = 'ok';
$a->attach(new stdClass(), 'ok');
?>
This prints:
```
offsetSet called
attach called
```
While we would expect...
```
offsetSet called
attach called
attach called
```
... if `offsetSet` was a true alias of `attach`. I'm not sure if this is intentional or not.