PHP 8.1.0 Released!

SplObjectStorage::offsetGet

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SplObjectStorage::offsetGetReturns the data associated with an object

Açıklama

public SplObjectStorage::offsetGet(object $object): mixed

Returns the data associated with an object in the storage.

Değiştirgeler

object

The object to look for.

Dönen Değerler

The data previously associated with the object in the storage.

Hatalar/İstisnalar

Throws UnexpectedValueException when object could not be found.

Örnekler

Örnek 1 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]
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

string(5) "hello"
NULL

Ayrıca Bakınız

add a note add a note

User Contributed Notes 2 notes

up
2
acgrid
5 years ago
The performance of SplObjectStorage in PHP7.0.7 has boosted a lot.

SplObjectStorage
double(1.3110690116882)
[object_hash => value]
double(2.4147419929504)
up
2
kontrollfreak+php at gmail dot com
6 years ago
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
To Top