Echipele de consolă - subiecte speciale - un ghid cuprinzător pentru Yii 2

Î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, se referă la acțiunea operatorului. Parametrii vor fi înlocuiți în proprietățile clasei și în argumentele metodei de acțiune.

De exemplu, MigrateController :: actionUp () cu MigrateController :: $ migrationTable prin setarea migrărilor și o limită de 5 migrații poate fi apelată 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.

ajustare

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 dvs. 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 completarea 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 care 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, ruta de migrare / creare a apelurilor o subcomandă care corespunde metodei 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).

opțiuni

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.

argumente

Î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 din clasa de comandă a consolei, este disponibilă metoda yii \ console \ Controller :: 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 dumneavoastră:

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:

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 să compilați un șir dinamic prin combinarea mai multor stiluri, este mai bine să utilizați ansiFormat ():







Articole similare

Trimiteți-le prietenilor: