Sono consapevole del fatto che JSON non supporta la serializzazione delle funzioni, che è perfettamente accettabile e persino desiderata. Le mie classi sono attualmente utilizzate come oggetti valore nella comunicazione con JavaScript e le funzioni non hanno alcun significato (e le normali funzioni di serializzazione non sono utilizzabili).
Tuttavia, poiché la funzionalità di queste classi aumenta, incapsulare le loro funzioni di utilità (come ad esempio un save dell'utente() in questo caso) all'interno della classe effettiva ha senso per me. Ciò significa che non sono più strettamente oggetti di valore, ed è lì che mi imbatto nel mio problema di cui sopra.
un'idea che ho avuto avrebbe il nome della classe specificato all'interno della stringa JSON, e probabilmente finire così:
$string = '{"name": "testUser", "password": "testPassword", "class": "User"}';
$object = json_decode ($string);
$user = ($user->class) $object;
E il contrario sarebbe impostando la proprietà di classe durante/dopo json_encode. Lo so, un po 'contorto, ma sto solo cercando di mantenere insieme il codice correlato. Probabilmente finirò per riprendere le mie funzioni di utilità dalle classi; l'approccio del costruttore modificato sembra un po 'opaco e si mette nei guai con oggetti nidificati.
Apprezzo questo e qualsiasi feedback futuro, tuttavia.
fonte
2009-03-18 15:29:54
Esattamente. JSON non ha modo di codificare il tipo di oggetto originale. – Powerlord