Î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 utilizat î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:
Completarea automată a comenzilor consolei
Completarea automată a argumentelor de comandă este o caracteristică utilă atunci când lucrați pe linia de comandă. Începând cu versiunea 2.0.11, comanda ./yii acceptă completarea automată pentru Bash și ZSH.
Finalizarea automată pentru Bash
Asigurați-vă că sunt instalate instrumentele de auto-completare pentru Bash. În cele mai multe distribuții, ele sunt furnizate în mod prestabilit.
Salvați scriptul de completare automată în directorul /etc/bash_completion.d/:
Pentru utilizarea temporară, puteți salva fișierul într-un director arbitrar și îl puteți conecta pe durata sesiunii apelând comanda sursă yii.
Dacă scriptul a fost instalat la nivel global, va trebui să reporniți terminalul sau să rulați comanda sursă
/.bashrc pentru a activa finalizarea automată.
Consultați instrucțiunile de auto-completare Bash pentru informații despre alte moduri de a conecta scripturile de completare automată la mediul dvs.
Completare automată pentru ZSH
Salvați scriptul de completare automată în directorul pentru scripturile de completare automată. De exemplu,
Adăugați acest director la variabila de mediu $ fpath. de exemplu adăugând la sfârșit
/.zshrc următoarea linie:
Asigurați-vă că programul compinit funcționează. Dacă nu este cazul, adăugați la
/.zshrc următoarele rânduri:
Apoi reporniți terminalul sau rulați comanda
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ă la apelarea comenzii nu conține un ID de acțiune, va fi apelată 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 ar trebui tratat ca un matrice. Matricea va fi generată prin împărțirea șirului de introducere cu virgule.
Opțiune Aliasuri
Începând cu versiunea 2.0.8 în consola de comandă de clasă disponibilă metoda [[Yii \ consola \ Controler :: optionAliases ()]], vă permite să adăugați aliasuri pentru opțiuni.
Pentru a specifica un alias, treceți peste metoda [[yii \ console \ Controller :: optionAliases ()]] în controlerul dvs.:
Acum puteți utiliza următoarea sintaxă pentru a rula comanda:
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:
- [[Yii \ consola \ controler :: EXIT_CODE_NORMAL | Controler :: EXIT_CODE_NORMAL]], cu o valoare de 0;
- [[Yii \ consola \ controler :: EXIT_CODE_ERROR | 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ă nu 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 pentru a colecta un șir de caractere care combină în mod dinamic mai multe stiluri, cel mai bine este de a utiliza [[Yii \ ajutoare \ Console :: ansiFormat () | ansiFormat ()]]: