Console artisan, laravel în limba rusă

Crearea comenzilor

În plus față de comenzile standard Artizan, puteți crea și comenzile proprii. În mod normal, comenzile sunt stocate în folderul app / Console / Commands. Dar le puteți pune oriunde altundeva în care pot fi găsite și descărcate de către Compozitor.







Generarea de comenzi

Pentru a crea o comandă nouă, folosiți comanda Artizan sh make: command. Această comandă va crea o nouă clasă de comandă în folderul app / Console / Commands. Dacă acest dosar nu există, acesta va fi creat pentru prima dată când executați comanda sh make:. Comanda generată va conține un set standard de proprietăți și metode comune tuturor comenzilor:

Apoi trebuie să înregistrați comanda. apoi poate fi lansat prin interfața de comandă Artisan.

Pentru a crea o comandă nouă, puteți folosi comanda Artisan sh: consola. care va crea un stub cu care puteți începe să lucrați.

Această comandă va crea o clasă în app / Console / Commands / SendEmails.php. Când creați o comandă, cheia sh - comanda poate fi utilizată pentru a atribui un nume de comandă terminalului:

Structura echipei

După generarea comenzii, trebuie să completați proprietățile semnăturii și descrierii din clasa sa, care sunt utilizate când se afișează comanda în lista de comenzi (lista sh). Când apelați comanda dvs., se apelează metoda PHP handle (). În ea puteți pune logica de care aveți nevoie.

Pentru a îmbunătăți codul, în ceea ce privește reutilizarea acestuia, este util să păstrați comenzile dvs. de consolă simple și să utilizați serviciile aplicației în ele pentru a-și îndeplini sarcinile. Rețineți că, în exemplul de mai sus, implementăm o clasă de servicii pentru a efectua o sarcină "consumatoare de timp" de a trimite e-mailuri.

Să ne uităm la comanda de exemplu. Putem implementa orice dependență cerută în constructorul comenzii. Containerul de serviciu Laravel va implementa automat toate dependențele specificate în constructor:

Comenzi de închidere

Comenzile bazate pe dispozitive de închidere reprezintă o alternativă la definirea comenzilor consolei sub formă de clase, similare cu modul în care închiderile în bucla reprezintă o alternativă la controlorii. În metoda comenzilor PHP () din fișierul app / Console / Kernel.php, Laravel încarcă fișierul rute / console.php:

Deși acest fișier nu definește rute HTTP, acesta definește punctele de intrare ale consolei (rute) din aplicația dvs. În acest fișier, puteți defini toate rutele pe baza închiderilor folosind metoda PHP Artisan. comanda (). Metoda de comandă PHP () are două argumente: semnătura de comandă și închiderea, care primește argumente și taste de comandă:

Închiderea este legată de instanța de comandă de bază, deci aveți acces deplin la toate metodele de ajutor care sunt disponibile în mod normal în clasa de comandă completă.

Specificarea tipurilor de dependență

În plus față de obținerea argumentelor și a tastelor comenzii dvs. în închiderea comenzilor, puteți specifica tipurile de dependențe suplimentare pe care trebuie să le obțineți din containerul de servicii:

Când definiți comenzi bazate pe închideri, puteți folosi metoda PHP describe () pentru a adăuga o descriere a comenzii. Această descriere va fi afișată atunci când rulează comenzile sh php artisan list sau sh php artisan help:

Definirea așteptărilor de intrare

La crearea comenzilor consolei, este adesea necesar să primiți intrări de la un utilizator prin intermediul unor argumente sau chei. În Laravel, este foarte convenabil să determinați intrarea așteptată de la utilizator utilizând proprietatea de semnătură a comenzii dvs. Această proprietate vă permite să specificați numele, argumentele și tastele pentru comandă într-o singură sintaxă expresivă, asemănătoare unei rute.

Toate argumentele și cheile introduse de utilizator sunt închise în bretele curbate. În exemplul următor, comanda specifică un argument necesar, utilizatorul:

Puteți face argumentul opțional și puteți determina valorile implicite pentru argumente:

Cheile, ca și argumentele, sunt o formă de intrare a utilizatorului. Acestea sunt indicate printr-un prefix de două cratime (-). Există două tipuri de chei: acceptarea valorii și neacceptarea. Cheile care nu iau o valoare sunt "comutatoare" logice. Să ne uităm la acest tip de cheie:

În acest exemplu, atunci când apelați comanda Artisan, poate fi specificată tasta shqueque. Dacă tasta Shqueque este trecută. atunci valoarea sa este adevărată. altfel fals:

Acum uita-te la cheile care sunt în așteptare pentru valoarea. Necesitatea de a introduce o valoare pentru o cheie este specificată folosind semnul egal (=):

În acest exemplu, utilizatorul poate trece valoarea pentru cheia astfel:

Pentru chei, puteți specifica o valoare implicită, specificând-o după numele cheii. Această valoare va fi utilizată dacă utilizatorul nu specifică valoarea cheii:







Pentru a specifica o comandă rapidă la definirea unei chei, o puteți specifica în fața numelui cheii și o puteți separa cu un caracter vertical (|):

Introducerea matricelor

Dacă doriți să specificați că argumentele sau cheile vor accepta matrice, utilizați caracterul *. În primul rând, să examinăm un exemplu de specificare a unui argument de matrice:

Când apelați această comandă pe linia de comandă, puteți să transmiteți în ordine argumentele utilizatorului. De exemplu, următoarea comandă setează valoarea utilizatorului la ['foo', 'bar']:

La definirea unei chei care va accepta o matrice, fiecare valoare cheie transmisă comenzii trebuie să aibă un prefix sub forma unui nume de cheie:

Descriere de intrare

Puteți specifica o descriere a argumentelor și a cheilor, separându-le cu un colon. Dacă aveți nevoie de un spațiu mai mic pentru a defini comanda dvs., puteți împărți descrierea în mai multe rânduri:

Comenzi I / O

Citirea intrărilor

În timpul executării comenzii, veți avea, desigur, nevoie de acces la argumentele și cheile care i-au fost transmise la intrare. Pentru a face acest lucru, puteți utiliza metodele PHP argument () și opțiunea PHP ().

Pentru a citi valoarea unui argument, folosiți metoda argumentului PHP ():

Dacă trebuie să citiți toate argumentele sub forma unei matrice, sunați metoda PHP arguments () (pentru versiunea 5.2 și anterioară - metoda argumentului PHP () fără argumente):

Cheile pot fi citite la fel de ușor ca argumentele utilizând metoda opțiunii PHP (). Pentru a obține o matrice a tuturor cheilor, sunați la metoda de opțiuni PHP () (pentru versiunea 5.2 și mai devreme - metoda opțiunii PHP () fără argumente):

Dacă argumentul sau cheia nu există, PHP null va fi returnat.

Solicitați intrare

În afară de afișarea ieșirii, puteți interoga utilizatorul pentru date în timpul rulării. Metoda PHP ask () va imprima interogarea, va accepta datele introduse și apoi va returna comanda:

Metoda secretă PHP () este similară cu metoda ask (). dar nu afișează datele introduse de utilizator în consola. Această metodă este utilă atunci când solicitați informații sensibile, cum ar fi o parolă:

Pentru a obține o confirmare simplă de la utilizator, puteți utiliza metoda confirm () PHP. În mod implicit, această metodă returnează false. Dar dacă utilizatorul introduce y sau da ca răspuns la o interogare, metoda returnează true:

Metoda PHP anticipate () poate fi utilizată pentru a oferi utilizatorului opțiuni posibile de selecție. Indiferent de disponibilitatea acestor opțiuni, utilizatorul poate specifica versiunea proprie.

Întrebări cu răspunsuri multiple

Pentru a oferi utilizatorului un anumit set de opțiuni, puteți utiliza metoda choice () PHP. Puteți seta o valoare implicită, în cazul în care opțiunea nu este selectată:

Pentru ieșire, puteți utiliza metodele din linia PHP (). PHP info (). Comentariu PHP (). Întrebare PHP () și eroare PHP (). Fiecare dintre ele va folosi culorile corespunzătoare ANSI pentru a afișa textul. Să luăm ca exemplu un mesaj de informare pentru utilizator. De obicei, metoda PHP info () imprimă un text verde în consola:

Utilizați metoda de eroare PHP () pentru a afișa mesajul de eroare. Emite textul culorii roșii pe consola:

Pentru a trimite cu ușurință text în consola fără a utiliza culori speciale, utilizați metoda liniei PHP ():

Metoda PHP table () vă permite să formatați cu ușurință mai multe rânduri / coloane de date. Doar trimiteți anteturile și liniile la ea. Lățimea și înălțimea vor fi determinate dinamic pe baza datelor transmise:

Pentru activități extinse, poate fi util să afișați un indicator de proces. Utilizând obiectul de ieșire, putem porni, muta și opri indicatorul. Mai întâi, determinați numărul total de pași pe care procesul îl va întreprinde. Apoi mutați indicatorul după fiecare pas:

Specificând numele de mediu pentru a rula comanda

Puteți specifica mediul care va fi utilizat la executarea comenzii, folosind tasta sh -env:

Afișează versiunea curentă a lui Laravel

De asemenea, puteți afla versiunea actuală a instalării Laravel utilizând tasta Shvers:

Înregistrarea echipei

Când echipa ta este scrisă, trebuie să o înregistrezi în Artisan. Toate comenzile sunt înregistrate în fișierul app / Console / Kernel.php. În el veți găsi o listă de comenzi în proprietatea comenzilor. Pentru a vă înregistra echipa, pur și simplu adăugați numele clasei comenzii în această listă. Când se încarcă Artisan, toate comenzile listate în această proprietate vor fi incluse în containerul de serviciu și vor fi înregistrate în Artisan:

Execuția programului de comenzi

Uneori trebuie să executați o comandă din afara liniei de comandă. De exemplu, când doriți să executați o comandă dintr-un traseu sau un controler. Pentru a face acest lucru, puteți folosi metoda apelului PHP () din fațada Artisan. Această metodă ia primul argument ca numele comenzii, iar al doilea este matricea argumentelor de comandă. Codul de ieșire va fi returnat:

Folosind metoda queue () PHP, puteți pune chiar și comenzi în coadă, apoi vor fi procesate în fundal cu ajutorul agendei de coadă. Înainte de a utiliza această metodă, asigurați-vă că ați configurat coada și că ascultătorul funcționează:

Când trebuie să specificați o valoare cheie care nu ia o valoare de șir, de exemplu, pavilionul sh - force al migrației sh: reîmprospătare. puteți trece adevărat sau fals:

Apelarea comenzilor din alte echipe

Uneori trebuie să apelați o altă echipă de la dumneavoastră. Pentru aceasta, folosiți metoda de apel PHP (). Este nevoie de numele comenzii și de sfera argumentelor ei:

Dacă doriți să apelați o altă echipă și să interzică ieșirea în consolă, utilizați metoda PHP callSilent (). Această metodă are aceleași argumente ca și metoda apelului PHP ():

Programarea echipelor de artizani

Această secțiune a articolului este relevantă numai pentru versiunea 5.0 și a fost
eliminat în versiunea 5.1.

Anterior, dezvoltatorii au trebuit să creeze Cron-sarcini pentru fiecare comandă consola pe care doresc să-și planifice. E plictisitor. Pentru consola de planificare comenzi nu mai efectuat controlul versiunilor, și pentru a adăuga Cron-sarcini trebuie să conectați la un server SSH. Să ne simplificăm viața. comandă Scheduler Laravel vă permite să setați în mod flexibil și emfatic comenzile de plan în Laravel, iar serverul are nevoie doar de o singură sarcină Cron.

Planul de comenzi este stocat în aplicația / Consola / Kernel.php. În această clasă, veți găsi metoda de programare PHP. Pentru a vă ajuta să înțelegeți, metoda include un exemplu simplu. Puteți adăuga cât mai multe sarcini planificate la Programul PHP așa cum doriți. Și pe server trebuie să adăugați o singură sarcină Cron:

Această sarcină va apela programatorul Laravel la fiecare minut. Și el, la rândul său, va verifica sarcinile din plan și va îndeplini sarcinile necesare. Este mai ușor de nicăieri!

Mai multe exemple de planificare

Să ne uităm la câteva exemple de planificare.

Planificarea comenzilor terminale







Trimiteți-le prietenilor: