SplObjectStorage::offsetGet()
(PHP 5 >= 5.3.0, PHP 7)
Returns the data associated with an object
说明
public SplObjectStorage::offsetGet(object $object) : mixed
Returns the data associated with an object in the storage.
参数
- $object
The object to look for.
返回值
The data previously associated with the object in the storage.
错误/异常
Throws UnexpectedValueException when $object could not be found.
范例
SplObjectStorage::offsetGet() example
<?php $s = new SplObjectStorage; $o1 = new StdClass; $o2 = new StdClass; $s[$o1] = "hello"; $s->attach($o2); var_dump($s->offsetGet($o1)); // Similar to $s[$o1] var_dump($s->offsetGet($o2)); // Similar to $s[$o2] ?>
以上例程的输出类似于:
string(5) "hello" NULL
参见
- SplObjectStorage::offsetSet() Associates data to an object in the storage
- SplObjectStorage::offsetExists() Checks whether an object exists in the storage
- SplObjectStorage::offsetUnset() Removes an object from the storage
The performance of SplObjectStorage in PHP7.0.7 has boosted a lot. SplObjectStorage double(1.3110690116882) [object_hash => value] double(2.4147419929504)
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