- Introduzione
- XAMPP
- Composer
- YII 2.0
- INIT della nostra webapp - SOLO per template avanzato
- Configurare il db
- Dov'è la mia app ?
- Come faccio login ?
- Generazione automatica del codice
- Abilitare i pretty url
Introduzione ¶
Una delle soluzioni che preferisco per studiare un framework PHP è avere a disposizione un webserver portabile, ovvero che non richiede una vera e propria installazione. Questo mi permette spesso di lavorare direttamente su una chiavetta USB, potendo passare da un computer ad un altro di casa, o al lavoro, o dai clienti per le demo, senza alcun problema, avendo sempre con me l'ambiente server completo: server web, server MySQL, interprete php.
Personalmente trovo che la versione "portable" sia molto più semplice da aggiornare, ed io tengo sempre costantemente aggiornato TUTTO il parco software relativo al mio webserver.
XAMPP ¶
Andiamo a questo indirizzo web: https://www.apachefriends.org/it/index.html
Nella homepage del sito trovate già una barra con indicati i principali link per scaricare direttamente XAMPP. Io sto usando Windows 8.1 Update 1 a 64 bit in questo momento, per cui potrei scaricare XAMPP per Windows ed otterrei il pacchetto per l'installazione automatica.
La mia intenzione è invece di NON installare nulla, per poter aggiornare agevolmente l'ambiente e poter usare il tutto, come detto anche su una penna USB.
Per fare questo clicchiamo sul link "Download" visibile in alto nel sito di XAMPP, quindi nel riquadro relativo a XAMPP per Windows clicchiamo su "Altri Download".
Cercheremo il file ".zip" contenente l'ultima release, per cui nell'elenco dei file clicchiamo sulla cartella "XAMPP Windows", clicchiamo sull'ultima release disponibile. Da fine 2014, XAMPP segue come numero di versione quella del PHP che usa, molto comodo per identificare esattamente quale versione scaricare, se ce ne serve una specifia, altrimenti, appunto, scaricate l'ultima versione.
Dall'elenco file, scegliamo l'ultima release disponibile, come dicevamo, avendo cura di scegliere la versione 'portable' e NON l'installer bensì la versione .zip (o.7z se abiamo l'eccellente 7-zip installato, occupa di meno il download, ma il contenuto del file è ovviamente identico); attualmente non c'è una versione 64bit, ma poco male. La dimensione dello zip è attualmente (inizio 2015) di oltre 140 MB. Prendetevi pure un caffè.
Installazione ¶
Decomprimete il contenuto dello .zip o del .7z ("seven zip") in un punto a voi congeniale del disco.
Nota: Anche se questa è la versione portabile, vi sconsiglio di lavorare giorno per giorno direttamente su una chiavetta USB perché spaventosamente più lento; questa almeno la mia esperienza, anche perché io ho un disco SSD come unità di lavoro principale e la differenza è plateale
Altro piccolo consiglio: invece di decomprimere il file direttamente, apritelo ed estrate la cartella xampp (c'è solo quella).
Primo avvio di XAMPP ¶
Entrate nella cartella xampp ed eseguite il file "xampp-control.exe".
La prima volta vi verrà chiesta la lingua (inglese o tedesco, fate voi ma io il tedesco non lo capisco), cliccate su "Save" e procedete
Dal pannello che vi si apre cliccate sui servizi che vi servono: Apache (il web server) e MySql (il server della base dati). E' tutto già perfettamente configurato, dovete solo dare l'ok la prima volta perchè venga creata una regola sul firewall di Windows affinchè i server stessi possano funzionare a dovere. Complicato? No... cliccate su Ok e rilassatevi
Se tutto è andato come dovrebbe avrete "luce verde" su Apache e su MySql.
Per verificarlo aprite un browser e andate all'indirizzo: http://localhost/. Saprete che tutto è ok se vedrete il logo di XAMP
A questo punto potete anche cancellare TUTTO dalla directory htdocs, perchè inizieremo subito a popolare la cartella con quanto serve a noi. Non è strettamente necessario, ma io adoro lavorare sul pulito
Composer ¶
Composer è un gestore di dipendenze specifico per PHP.
Per l'installazione, ci avvaliamo dell'installer specifico per Windows scaricabile a questo indirizzo: https://getcomposer.org/download/
In verità se volete fare presto potete, e ve lo consiglio dal prompt dei comandi usare questo comando
php -r "readfile('https://getcomposer.org/installer');" | php
oppure, del tutto equivalente
curl -sS https://getcomposer.org/installer | php
Il file è molto piccolo, e l'installazione è semplice. Se non sapete dove si trova php.exe in xampp, sappiate che il percorso è: xampp\php\php.exe
Se usate una versione VECCHIA di XAMPP, Prima di procedere DOVETE abilitare openssl in php. Nella versione con cui ho aggiornato questa guida, superiore o uguale alla 1.8.3.5, non c'era più bisogno in quanto già abilitato. Se abbiamo bisogno di fare questa modifica, apriamo il pannello di controllo di XAMPP, stoppiamo Apache, clicchiamo su "Config" e scegliamo il file php.ini
Rimuoviamo il punto e virgola dalla riga seguente e salviamo
;extension=php_openssl.dll
Solo ora possiamo avviare l'installer.
Al termine riavviamo Apache.
YII 2.0 ¶
E' fondamentale installare questo prerequisito (come stabilito dalla guida ufficiale inglese, qui)
php composer.phar global require "fxp/composer-asset-plugin:1.0.0"
Nota bene: controllate nella guida qui sopra linkata se è cambiato il numero di versione del prerequisito
Questo prerequisito è installato a livello globale, vuol dire che al prossimo progetto sullo stesso ambiente non ci sarà più bisogno di riscaricarlo. Rieseguendolo, verrà installato dalla cache locale, facendo risparmiare tempo.
Rimanendo nella cartella xampp\htdocs, scarichiamo yii e tutte le dipendenze aggiornate digitando così
php composer.phar require --prefer-dist "yiisoft/yii2 *"
Avremo in htdocs tre file relativi a composer ed una cartella vendor con varie sottocartelle che contengono i prerequisiti di yii, già installati.
Ora, senza cambiare directory, digitiamo uno dei seguenti comandi per creare l'applicazione 'scheletro" che preferiamo, la prima è la versione base, la seconda è la versione più completa, divisa in frontend, backend, console, supporto per esecuzione in più ambienti, etc..
Prima di farlo una nota: il comando che segue creare l'app in una sottocartella denominata basic o advanced a seconda del caso. Il nome della cartella è l'ultima parola del comando, e lo potete scegliere voi.
Nota: non potete avere l'app basic o advanced che sia sulla root dell vostro webserver (htdocs, nel nostro caso, perchè quando eseguite create-project, composer si rifiuta di procedere se la directory di destinazione non è vuota, e la root non lo è avendo, come minimo, il composer.phar stesso al suo interno)
Questo è il comando per creare l'app base in xampp\htdocs\basic
php composer.phar create-project --prefer-dist yiisoft/yii2-app-basic basic
Questo è il comando per creare l'app avanzata in xampp\htdocs\advanced
php composer.phar create-project --prefer-dist yiisoft/yii2-app-advanced advanced
Ad onor del vero è possibile anche scaricare lo skeleton dalla pagina di GitHub con l'elenco dei progetti: https://github.com/yiisoft/yii2/releases
Verifica della configurazione ¶
Intanto assicuriamoci che tutto sia ben configurato. Apriamo il browser all'indirizzo http://localhost/requirements.php
Noterete che ci sono alcuni warning, avvisi, relativi a configurazioni non ottimali. Una di queste è relativa alla PHP Intl extension. Non prendete sotto gamba questo avviso, senza di questa NON potrete avvalervi del nuovo sistema di I18N ("internationalization") di YII 2.
Abilitare PHP Intl extension ¶
Apriamo il pannello di controllo di XAMPP, fermiamo apache e dal pulsante config scegliamo il file php.ini
Togliamo il punto e virgola davanti a questa riga
;extension=php_intl.dll
Inoltre nella sezione [intl] dello stesso file aggiungiamo la seguente riga:
intl.default_locale = it_utf8
e togliamo il punto virgola da
;intl.error_level = E_WARNING
quindi salviamo il file.
Riavviamo apache e torniamo alla pagina dei requisiti.
Altri warning ¶
Un warning riguarda sicuramente PostgreSQL, di cui attualmente io mi disinteresso perchè uso MySql
Due warning riguardano due estensioni facoltative usate per il caching: apc e memcache. Queste vanno installate una sola alla volta, sono appunto facoltative, e sono delle cache per l'opcode generato dall'interprete php. Ho verificato di persona che su php <5.5 apc rende paurosamente più veloce qualsiasi webapp fatta con Yii. A quanto pare il fatto che php 5.5 includa una opcode cache rende queste inutili, ma, se volete sperimentare, la potete trovare alla voce 'APCu cache" tra le estensioni di PHP scaricabili dal sito ufficiale.
INIT della nostra webapp - SOLO per template avanzato ¶
Anche questo va eseguito solo una volta, dopo aver creato lo skeleton dell'applicazione avanzata. Se avete creato l'app 'basic' saltate alla prossima sezione
Andiamo nella cartella dell'applicazione con il prompt e digitiamo
./init
oppure, non dovesse funzionare per problemi di configurazione (sulle vecchie versioni di XAMPP mi succcedeva sempre)
php ./init
Ci viene chiesto di scegliere l'ambiente attuale di esecuzione, per cui scriviamo '0' (zero, senza virgolette) e premiamo invio, quindi confermiamo con 'yes', sempre senza le virgolette, ed un altro invio.
Configurare il db ¶
Il db si configura dal file xampp\htdocs\common\config\main-local
Scegliete un nome di db, l'utente e la password per la connessione e inseritelo qui. XAMPP esce 'di fabbrica' con nome utente 'root' e password vuota. IL CHE è UNA PESSIMA IDEA. Cambiatela il primo possibile !!!
Immaginando però di lasciare tutto com'è, dobbiamo creare un nuovo db denominato yii2advanced
o yii2basic
a seconda del caso. Apriamo phpmyadmin (http://localhost/phpmyadmin
), e creiamo il db
Per le tabelle, tranquilli, non saremo noi a farlo, ci pensa Yii 2.
Dal nostro prompt andiamo nella cartella htdocs (questo se come me avete creato la webapp come applicazione principale e non in una sottocartella)
yii migrate
confermare digitando 'yes' e premendo Invio. Dopo un mezzo secondo nel vostro db dovrebbero essere comparsa le tabella "user" (tiene i dati degli utenti) e "migration" (con lo storico delle migrazioni db eseguite)
Dov'è la mia app ? ¶
http://localhost/advanced/frontend/web/
e
http://localhost/advanced/backend/web/
oppure
http://localhost/basic/web/
Come faccio login ? ¶
Andate nel frontend, cliccate su "Signup" e createvi un account. Ebbene si, Yii2 nello skeleton ha già la gestione del login, e persino del recupero password !
Generazione automatica del codice ¶
Abilitare gii ¶
Entriamo dal prompt nella cartella htdocs e usiamo composer
composer require --prefer-dist yiisoft/yii2-gii "*"
Quindi accediamo a gii da qui:
http://localhost/advanced/frontend/web/index.php?r=gii/default/index
oppure
http://localhost/advanced/backend/web/index.php?r=gii/default/index
oppure, nella versione base, semplicemente
http://localhost/basic/web/index.php?r=gii/default/index
Generazione dei model ¶
Una volta che gii è abilitato, possiamo tranquillamente usarlo per creare i model.
E' necessario tenere a mente che, mentre nella versione base dell'applicazione c'è una unica cartella models
, nella versione avanzata ce ne sono ben tre: frontend\models
, backend\models
e common\models
.
Quando specificate il nome del modello come app\models\, nella versione base i modelli vengono creati ovviamente in models
, invece nella versione advanced 'app' prende come significato frontend o backend a seconda dell'indirizzo da cui avete lanciato gii; se desiderate, come spesso è buona pratica, creare i modelli in common\models
, allora usate common\models\<nome classe>
invece della suggerita app\models\<nome classe>
Abilitare i pretty url ¶
Per prima cosa creiamo dentro ciascuna directory /web il seguente file denominandolo .htaccess
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
Quindi dentro a ciascun config/main.php inseriamo la configurazione del componente 'urlManager'. Ricordiamoci che la seguente configurazione va inserita 'dentro' all'array components, e non sullo stesso livello
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
]
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.