En el siguiente código:Al usar SplObjectStorage como un mapa de datos, ¿puede usar una matriz mutable como datos?
$storage = new \SplObjectStorage();
$fooA = new \StdClass();
$fooB = new \StdClass();
$storage[$fooA] = 1;
$storage[$fooB] = array();
$storage[$fooA] = 2;
$storage[$fooB][] = 'test';
Yo esperaría $storage[$fooA]
para ser 1
, que se encuentra. También esperaría que $storage[$fooB]
fuera array('test')
, que no lo es. Esto también provoca un aviso que dice: "modificación indirecta del elemento de sobrecarga de SplObjectStorage no tiene ningún efecto en ..."
creo que esto se debe a que la implementación de ArrayAccess
en SplObjectStorage
no devuelve valores de referencia.
¿Hay alguna forma de utilizar SplObjectStorage
como un mapa de datos donde las claves son objetos y los valores son matrices mutables? ¿Hay alguna otra opción viable para hacer este tipo de trabajo?