International PHP Conference 2015

SplObjectStorage::offsetGet

(PHP 5 >= 5.3.0)

SplObjectStorage::offsetGetDevuelve los datos asociados con un object

Descripción

public mixed SplObjectStorage::offsetGet ( object $object )

Devuelve los datos asociados con un object en el almacenamiento.

Parámetros

object

El object a ser comprobado.

Valores devueltos

Los datos previamente asociados con el object en el almacenamiento.

Errores/Excepciones

Lanza una excepción de tipo UnexpectedValueException cuando no se pudo encontrar object.

Ejemplos

Ejemplo #1 Ejemplo de SplObjectStorage::offsetGet()

<?php
$s 
= new SplObjectStorage;

$o1 = new StdClass;
$o2 = new StdClass;

$s[$o1] = "hola";
$s->attach($o2);


var_dump($s->offsetGet($o1)); // Similar a $s[$o1]
var_dump($s->offsetGet($o2)); // Similar a $s[$o2]
?>

El resultado del ejemplo sería algo similar a:

string(4) "hola"
NULL

Ver también

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