În plus față de posibilitățile bogate de a construi aplicații web, Yii are, de asemenea, suport complet pentru aplicațiile consola, care sunt utilizate, de obicei, pentru a crea sarcini de fundal și servicii care să sprijine site-ul.
Structura aplicațiilor consolei este foarte asemănătoare cu structura unei aplicații web. Se compune din una sau mai multe clase [[yii \ console \ Controller]], care sunt adesea numite comenzi în mediul de consolă. Fiecare controler poate avea una sau mai multe acțiuni, cum ar fi controlerele web.
În ambele șabloane de proiect, există deja o aplicație de consolă. Puteți să o rulați prin apelarea scriptului yii, care se află în directorul principal al aplicației dvs. Veți primi o listă de comenzi disponibile dacă îl numiți fără parametri:
După cum puteți vedea în screenshot, Yii are deja un set de comenzi implicite disponibile:
utilizarea
Puteți porni acțiunea controlerului consolei folosind următoarea sintaxă:
În exemplul de mai sus,
De exemplu, [Yii \ consola \ controlerele [\ MigrateController :: actionUp () | MigrateController :: actionUp ()]] cu [[Yii \ consola \ controlere \ MigrateController :: $ migrationTable | MigrateController :: $ migrationTable]] migrări de instalare iar limita a 5 migrații poate fi cauzată după cum urmează:
Notă. Când este folosit în consola *. nu uitați să le puneți în ghilimele "*" pentru a evita interpretarea și înlocuirea acestora cu toate fișierele din acest director.
Script de intrare
Scriptul de intrare al aplicației consola este un fel de fișier index.php. utilizate în aplicația web. Scriptul consolei de intrare este de obicei denumit yii și este localizat în directorul principal al aplicației. Acesta conține un cod similar cu următorul text:
Acest script va fi creat ca parte a aplicației dvs.; îl puteți edita dacă aveți nevoie de ea. YII_DEBUG poate fi setat la false dacă nu aveți nevoie să vedeți eroarea de ieșire de depanare și / sau dacă doriți să îmbunătățiți performanța generală. În ambele șabloane de aplicații, în scriptul de intrare al aplicației, depanarea este activată implicit pentru a oferi un mediu mai ușor de utilizat.
După cum puteți vedea din codul de mai sus, aplicația consola utilizează propriul fișier de configurare, numit console.php. În acest fișier, trebuie să configurați diferite componente ale aplicației și proprietățile aplicației console.
Dacă aplicația web și consola are mai multe opțiuni de configurare obișnuite, puteți selecta partea partajată într-un fișier separat și o puteți include atât în fișierele de configurare (web și consola). Puteți vedea un exemplu în șablonul de proiect "avansat".
Sfat: uneori, poate fi necesar să executați o comandă de consolă utilizând o altă configurație decât cea specificată în scriptul de intrare. De exemplu, puteți utiliza comanda migrație yii pentru a actualiza baza de date de testare, care este configurată pentru fiecare suită de testare. Pentru a modifica fișierul de configurare, pur și simplu specificați fișierul de configurare prin opțiunea appconfig când executați comanda:
Yii
Crearea propriilor echipe
Console Controller și acțiune
Comanda consola este definită ca o clasă de controler ce extinde [[yii \ console \ Controller]]. În clasa controlerului, definiți una sau mai multe acțiuni care corespund subcomandărilor controlerului. În fiecare acțiune, scrieți codul care implementează sarcinile corespunzătoare subcomandei date.
Când executați comanda, trebuie să specificați ruta acțiunii. De exemplu, migra / crea traseu este sub-comandă care corespunde metodei [consolei \ controllere Yii \ [\ MigrateController :: actionCreate () | MigrateController :: actionCreate ()]]. Dacă ruta propusă în comanda de apel, nu indică identificatorul de acțiune, va fi cauzată de acțiunea implicită (precum și în aplicația web).
Pentru a suprascrie metoda [[yii \ console \ Controller :: options] ()], puteți specifica opțiunile disponibile în comanda consolei (controller / actionID). Metoda trebuie să returneze o listă de atribute publice ale clasei. Când executați comanda, puteți specifica valoarea opțiunilor utilizând sintaxa --OptionName = OptionValue. Aceasta va lega OptionValue la atributul OptionName al clasei de controler.
Dacă valoarea implicită a opțiunii este o matrice, atunci când această opțiune este setată, atunci când comanda este executată, valoarea va fi convertită într-un matrice împărțind șirul de primire cu virgule.
În plus față de opțiuni, comanda poate primi argumente. Argumentele vor fi transmise ca parametri metodei de acțiune corespunzătoare subcomandei solicitate. Primul argument corespunde primului parametru, al doilea argument al celui de-al doilea parametru și așa mai departe. Dacă argumentele transmise nu sunt suficiente la apelarea comenzii, atunci parametrii vor fi atribuiți implicit, dacă sunt definiți. Dacă valorile implicite nu sunt definite și nu au fost transferate, comanda va eșua cu o eroare.
Puteți utiliza o instrucțiune de matrice. pentru a indica faptul că argumentul trebuie tratat ca o matrice. Matricea va fi generată prin împărțirea șirului de introducere cu virgule.
Următorul exemplu arată modul de descriere a argumentelor:
Cod retur
Atunci când dezvoltați o aplicație consola, este obișnuit să folosiți un cod de retur. Acceptat, codul 0 înseamnă că comanda a avut succes. Dacă comanda a returnat un cod mai mare decât zero, atunci aceasta indică o eroare. Numărul care a fost returnat la eroare poate fi folosit pentru a găsi informații mai detaliate despre eroare. De exemplu, 1 poate indica o eroare necunoscută și toate codurile de mai sus pot fi rezervate pentru erori specifice: erori de intrare, fișiere corupte și altceva.
Pentru ca comanda consolei să returneze un cod de returnare, returnați un întreg în metoda de acțiune a controlerului:
Există mai multe constante predefinite pe care le puteți utiliza:
- Controler :: EXIT_CODE_NORMAL cu o valoare de 0;
- Controler :: EXIT_CODE_ERROR cu o valoare de 1.
Este o practică bună să determinați constantele care sunt semnificative pentru controlerul dvs. în cazul în care utilizați mai multe tipuri de erori.
Formatarea și culorile
Consola Yii acceptă ieșirea de formatare, care se degradează automat la unformat, dacă este acceptată în terminalul unde rulează comanda.
Ieșirea liniilor formate este simplă. Iată cum puteți tipări un text îndrăzneț:
Dacă aveți nevoie să compilați un șir dinamic prin combinarea mai multor stiluri, este mai bine să utilizați ansiFormat: