Sto provando a creare un array contenente più oggetti.Come trasmettere più elementi di matrice all'oggetto
ho scritto questo codice (è un membro di una classe esistente)
public static $Roles = [
(object) ['code' => 'SO', 'name' => 'Socio'],
(object) ['code' => 'RESP', 'name' => 'Responsabile zona'],
(object) ['code' => 'AMM', 'name' => 'Amministratore'],
];
ma ottengo questo errore:
syntax error, unexpected '(object)' (object) (T_OBJECT_CAST), expecting ')'
sulla seconda riga.
Ho pensato che questo dovrebbe funzionare, perché ho già usato la stessa sintassi getto di definire elementi di un array associativi:
return view('edit-headquarter', [
'hq' => (object)['name' => '', 'id' => 0],
'submitAction' => 'insert'
]);
che sto facendo qualcosa di sbagliato?
EDIT: Sto utilizzando PHP 5.4.45
Non sono sicuro, ma this can be related come suggerito da Martin Persson
penso che questo abbia a che fare con la vostra versione di PHP. Se non funziona, puoi pensare di dichiarare un oggetto Stdclass o, ancora meglio, implementare una funzione che restituisce un oggetto stdclass dalla matrice fornita. (inoltre, un altro trucco possibile è json_decode a json_encode (array)) – briosheje
@ user340764, dove funziona correttamente? https://3v4l.org/pXo2o – Federkun
Qual è il punto? Si convertono gli array in oggetti 'stdClass' che sono solo array con meno funzioni e una sintassi diversa. Non forniscono alcuna funzionalità OOP utile. È meglio creare un 'Role' di classe e passare i valori di' code' e 'name' come argomenti al suo costruttore. Non c'è più bisogno di conversioni ed è possibile aggiungere ulteriori funzionalità quando necessario. – axiac