Aggiornamento dalla versione 2.0
Se non hai mai utilizzato Yii 2.0, puoi saltare questa sezione e passare direttamente alla sezione “Per iniziare”.
Pur condividendo alcune idee e valori comuni, Yii3 è concettualmente diverso da Yii 2.0. Non esiste un percorso di aggiornamento semplice, quindi è opportuno innanzitutto verificare la politica di manutenzione e le date di fine vita di Yii 2.0 e valutare la possibilità di avviare nuovi progetti su Yii3 mantenendo quelli esistenti su Yii 2.0.
Requisiti PHP
Yii3 richiede PHP 8.2 o versioni successive. Di conseguenza, vengono utilizzate funzionalità del linguaggio che non erano presenti in Yii 2.0:
- Dichiarazioni dei tipi
- Dichiarazioni del tipo di ritorno
- Visibilità delle costanti di classe
- Argomenti denominati
- Classi anonime
- ::class
- Generatori
- Funzioni variadiche
- Proprietà in sola lettura
- Classi in sola lettura
- Promozione delle proprietà del costruttore
- Attributi
Rifattorizzazione preliminare
È una buona idea rifattorizzare il tuo progetto Yii 2.0 prima di trasferirlo su Yii3. Ciò renderebbe più facile il trasferimento e apporterebbe benefici al progetto in questione mentre non è ancora stato trasferito su Yii3.
Utilizza l’iniezione delle dipendenze (DI) invece del localizzatore di servizi (Service Locator)
Poiché Yii3 ti obbliga a iniettare le dipendenze, è una buona idea prepararsi e passare dall'uso del localizzatore di servizi (Yii::$app->) al contenitore DI.
Se l'utilizzo del contenitore DI è problematico per qualsiasi motivo, valuta la possibilità di spostare tutte le chiamate a Yii::$app-> alle azioni del controller e ai widget e di passare manualmente le dipendenze da un controller a ciò che ne ha bisogno.
Per una spiegazione dell'idea, consultare Iniezione di dipendenze e contenitore.
Introdurre repository per ottenere dati
Poiché Active Record non è l'unico modo per lavorare con un database in Yii3, prendete in considerazione l'introduzione di repository che nascondano i dettagli relativi all'ottenimento dei dati e li raccolgano in un unico posto. Potrete rifarlo in un secondo momento:
php
final readonly class PostRepository
{
public function getArchive()
{
// ...
}
public function getTop10ForFrontPage()
{
// ...
}
}Separare il livello di dominio dall'infrastruttura
Nel caso in cui si disponga di un dominio ricco e complesso, è consigliabile separarlo dall'infrastruttura fornita da un framework, in modo che tutta la logica di business risieda in classi indipendenti dal framework.
Suddividi di più in componenti
I servizi Yii3 sono concettualmente simili ai componenti di Yii 2.0, quindi è consigliabile spostare le parti riutilizzabili dell'applicazione nei componenti.
Cose da imparare
Docker
I modelli d’applicazione predefiniti utilizzano Docker per eseguire l'applicazione. È consigliabile imparare a utilizzarlo e impiegarlo nei propri progetti poiché offre numerosi vantaggi:
- Esattamente lo stesso ambiente della produzione.
- Non è necessario installare nulla tranne Docker stesso.
- L'ambiente è per applicazione, non per server.
Variabili d'ambiente
I modelli dell'applicazione Yii3 utilizzano variabili d’ambiente per configurare parti dell'applicazione. Il concetto è molto utile per le applicazioni Dockerizzate , ma potrebbe risultare estraneo agli utenti di Yii 1.1 e Yii 2.0.
Azioni
A differenza di Yii 2.0, Yii3 non richiede l’uso di controller. Utilizza invece le azioni, che sono un qualsiasi oggetto richiamabile. È possibile organizzarle in controller simili a Yii 2, ma non è necessario.
Struttura applicativa
La struttura dell'applicazione Yii3 suggerita è diversa da quella di Yii 2.0. È descritta in struttura applicativa.
Nonostante ciò, Yii3 è flessibile, quindi è ancora possibile utilizzare una struttura simile a Yii 2.0 con Yii3.