PHP 8.6.0 Beta 1 is available for testing

SplObjectStorage::offsetSet

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

SplObjectStorage::offsetSetAsocia datos a un objeto en el almacenamiento

Descripción

public function SplObjectStorage::offsetSet(object $object, mixed $info = null ): void

Asocia datos a un object en el almacenamiento.

Nota:

SplObjectStorage::offsetSet() es un alias de SplObjectStorage::attach() .

Parámetros

object

El object al que se le van a asociar datos.

info

Los datos asociados con el object .

Valores devueltos

No se retorna ningún valor.

Ejemplos

Ejemplo #1 Ejemplo de SplObjectStorage::offsetSet()

<?php
$s = new SplObjectStorage;
$o1 = new stdClass;
$s->offsetSet($o1, "hola"); // Similar a $s[$o1] = "hola";
var_dump($s[$o1]);
?>

Resultado del ejemplo anterior es similar a:

string(4) "hola"

Véase también

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 1 note

up
1
aderh
3 years ago
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.
+add a note

AltStyle によって変換されたページ (->オリジナル) /