Ottenere dipendenze degli oggetti in PHP
-
26-10-2019 - |
Domanda
Ho un'istanza dell'oggetto che dipende da altri oggetti, per esempio.
$objA = new Some_Class();
$objB = new Other_Class();
$objC = new Another_One();
$objA->property = new stdClass;
$objB->key = $objA;
$objB->arr = array(new Other_Object());
$objectC->property = $objB
$objectC->other = array(array('k'=>'v'));
Come posso ottenere un elenco delle classi utilizzato in $objectC
?
In questo caso particolare:
array(
'Some_Class',
'Other_Class',
'Another_Class',
'stdClass',
'Another_Object'
)
Ho bisogno di serializzare l'oggetto, ma prima di deserializzazione, ho bisogno di creare un'istanza di tutte le classi necessarie.
Come si otterrebbe automaticamente le classi?
Soluzione
serialize
non è superficiale, è profondo.
Questo significa che se si chiama serialize($objectC);
, che stai ricevendo non solo $ ObjectC, ma anche tutte le sue proprietà, compresi eventuali oggetti che potrebbe contenere .
Se deve reinstanziare uno degli oggetti figlio (diciamo che è un adattatore di database, che contiene una risorsa unserializable), prendere in considerazione l'attuazione della Serializable interfaccia, che consente di eseguire il controllo a grana fine sul serializzare e operazioni unserialize che semplicemente non è possibile con il __sleep
/ __wakeup
metodi magici. È possibile utilizzare i metodi forniti dall'interfaccia di restituire una struttura di dati personalizzato che vi permetterà di ricostruire manualmente l'oggetto, se necessario.