Nel codice seguente:Utilizzando SplObjectStorage come mappa dati, è possibile utilizzare un array mutabile come dati?
$storage = new \SplObjectStorage();
$fooA = new \StdClass();
$fooB = new \StdClass();
$storage[$fooA] = 1;
$storage[$fooB] = array();
$storage[$fooA] = 2;
$storage[$fooB][] = 'test';
mi aspetterei di essere $storage[$fooA]
1
, quale è. Mi aspetto inoltre che $storage[$fooB]
sia array('test')
, che non è. Questo innesca anche un avviso che si legge, "la modifica indiretta elemento sovraccarico di SplObjectStorage non ha alcun effetto in ..."
penso che questo accade perché l'implementazione di ArrayAccess
in SplObjectStorage
non restituisce i valori di riferimento.
C'è un modo per utilizzare SplObjectStorage
come una mappa di dati in cui le chiavi sono oggetti ei valori sono matrici mutabili? Ci sono altre opzioni valide per fare questo tipo di lavoro?