SplObjectStorage::offsetGet

(PHP 5 >= 5.3.0)

SplObjectStorage::offsetGetReturns the data associated with an object

Descrizione

public mixed SplObjectStorage::offsetGet ( object $object )

Returns the data associated with an object in the storage.

Elenco dei parametri

object

The object to look for.

Valori restituiti

The data previously associated with the object in the storage.

Errori/Eccezioni

Throws UnexpectedValueException when object could not be found.

Esempi

Example #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]
?>

Il precedente esempio visualizzerĂ  qualcosa simile a:

string(5) "hello"
NULL

Vedere anche:

add a note add a note

User Contributed Notes 1 note

up
0
kontrollfreak+php at gmail dot com
1 month 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