Migrazione Laravel 5.4 -> 5.5
Updated at: 24/02/2018


Riporto qui di seguito alcuni punti da seguire per migrare i nostri progetti da laravel 5.4 a 5.5 e in particolare da jsmPackage con oggetti in sessione a no-session-exist_obj

Innazitutto Laravel 5.5 necessita di php7+

Ovviamente ci sono molte eccezioni e differenze da valutare di volta in volta, ma i passi principali sono i seguenti:

  • signature dei metodi: i metodi che estendono jsmController sono cambiati, quindi vanno aggiornati di conseguenza. tendenzialmente sono
    • init_form_fields -> deve avere il parametro $insert = false nella dichiarazione
    • init_filter_list -> togliamo $request dalla dichiarazione
    • index -> togliamo $request dalla dichiarazione
    • store -> dovrebbe essere rimasto uguale
    • update -> $id e $request hanno cambiato posizione, sono invertiti. Nella dichiarazione basta girarli però ATTENZIONE!
      se il metodo update ad un certo punto chiama il metodo parent::update() anche nell'invocazione sono da girare i parametri!
    • create -> togliamo $request dalla dichiarazione

  • Tutti i metodi base (update, edit, etc...) che mettono in sessione existing_obj devono essere modificati per toglierlo. Questo è particolarmente delicato perché togliendolo dalla sessione va visto che nessuno a valle lo usi, in particolare le view che vengono chiamate dai metodi.

  • tutti i metodi che hanno nella dichiarazione ($request = null) vanno modificati togliendo il parametro e aggiungendo come prima riga:
    $request = \Request();
    Questo va fatto ovviamente solo se poi nel metodo il parametro $request è effettivamente usato: siamo pieni di metodi che hanno $request nella dichiarazione ma poi non è usato, in quel caso si può cancellare senza problemi

  • i metodi che hanno nella dichiarazione ($request) senza l'opzione =null dovrebbero continuare a funzionare. Ovviamente anche qui se ci accorgiamo che $request non è usato all'interno del metodo facciamo pulizia.
    • in generale, è meglio se prendiamo l'abitudine di non usare $request nella dichiarazione di un metodo, a meno che sia strettamente necessario. In tutti gli altri casi si può usare direttamente \Request::input() oppure creare una variabile $request = \Request() da usare in seguito.

  • già che stiamo girando praticamente tutti i metodi, aggiungiamo l'invocazione alla documentazione laddove mancasse:
    \jsmDoc::log_method(__FUNCTION__, get_called_class(), __FILE__);



Io di solito procedo dall'inizio del controller cercando tutte le occorrenze di $request e valutando di volta in volta l'azione da intraprendere sulla base di quanto scritto sopra (e nel caso aggiungendo la documentazione).
Quindi riparto dall'inizio cercando "session" in modo da vedere se viene messo qualcosa di troppo in sessione.

Però ovviamente ciascuno può seguire il metodo che preferisce.