Subiecte de aplicații console speciale, ghidul definitiv pentru yii, frameworkul yii php

Aplicațiile de consolă sunt utilizate în principal pentru a efectua activități secundare sau de fond, cum ar fi generarea de coduri, compilarea unui index de căutare, trimiterea mesajelor e-mail etc. Yii oferă un instrument pentru dezvoltarea aplicațiilor de consolă, aderând la abordarea orientată spre obiecte. Permite aplicației console să acceseze resursele pe care le utilizează aplicația web principală (de exemplu, într-o bază de date).







1. Privire de ansamblu ¶

Fiecare task consolă este reprezentat în Yii ca o comandă. Comanda consola este descrisă în clasa care este moștenită de la CConsoleCommand.

După ce ați folosit webapp-ul yiic pentru a crea prototipul inițial al aplicației, fișierele protejate vor fi două:

  • yiic - script pentru Linux / Unix;
  • yiic.bat este un script pentru Windows.

În consola, puteți introduce următoarele comenzi:

După introducere, va fi afișată o listă cu toate comenzile disponibile. În mod implicit, acestea sunt comenzi furnizate de Yii (așa-numitele comenzi de sistem) și comenzi dezvoltate pentru aplicații specifice (așa-numitele comenzi de utilizator).

Pentru ajutor cu comanda, puteți rula

Pentru a porni comanda, utilizați următorul format:

2. Crearea comenzilor ¶

Comenzile consola se află în fișierele de clasă din dosarul specificat în CConsoleApplication :: commandPath. În mod implicit, acesta este protejat / comenzi.

Clasa de comandă a consolei trebuie să fie moștenită de la CConsoleCommand. Numele clasei trebuie să fie de forma XyzCommand. unde Xyz corespunde numelui comenzii, prima literă a cărei majuscule este. De exemplu, comanda sitemap trebuie să utilizeze clasa SitemapCommand. Numele comenzilor consolei sunt sensibile la litere mari și mici.

Sfat: Configurarea CConsoleApplication :: commandMap. puteți modifica, dacă doriți, convenția de denumire și locația clasei de comandă.

Pentru a crea o comandă nouă, trebuie fie să implementați metoda CConsoleCommand :: run (). sau una sau mai multe acțiuni (care urmează să fie descrise mai târziu).

Când introduceți comanda consolei, aplicația lansează metoda CConsoleCommand :: run (). Parametrii metodei sunt transmise în conformitate cu următorul antet:

unde $ args sunt parametrii opționali transferați din linia de comandă.

În interiorul comenzii consolei, puteți folosi Yii :: app () pentru a accesa instanța aplicației consola. Prin instanța rezultată, puteți accesa diverse componente, cum ar fi conectarea la o bază de date (Yii :: app () -> db). În măsura în care puteți spune, aceasta este foarte mult ca o aplicație web obișnuită.

Informații: Începând cu versiunea 1.1.1, puteți crea comenzi globale care sunt utilizate de toate aplicațiile. Pentru aceasta, variabila de mediu YII_CONSOLE_COMMANDS este definită și valoarea acesteia este scrisă pe calea către directorul cu clase de comenzi globale ale consolei.







3. Acțiunea comenzii consolei ¶

Notă: Această caracteristică este disponibilă de la versiunea 1.1.5.

Adesea comanda consolei trebuie să funcționeze cu diferiți parametri. Unele dintre ele pot fi obligatorii, dar unele nu sunt. De asemenea, poate fi necesar să se implementeze subcomenzi pentru a efectua diverse submăsuri. Toate acestea sunt simplificate prin utilizarea acțiunilor.

Acțiunea comenzii consolei este o metodă din clasa sa. Numele metodei trebuie să fie de forma actionXyz. unde Xyz corespunde cu numele acțiunii și prima literă cu majuscule. De exemplu, metoda actionIndex specifică o acțiune denumită index.

Pentru a începe o anumită acțiune, se folosește următorul format de comandă:

Perechile suplimentare de nume-valoare sunt transmise metodei de acțiune ca parametri denumiți. Valoarea opțiunii xyz corespunde parametrului $ xyz al metodei de acțiune. De exemplu, dacă definim următoarea clasă de comandă:

Apoi, toate comenzile următoare ale consolei vor apela actionIndex ("News", 5):

Dacă valoarea opțiunii nu este specificată (care este --type în loc de --type = News), parametrul de acțiune corespunzător va fi setat la true.

Notă: Formatele alternative pentru specificarea opțiunilor, cum ar fi --type News sau -t News nu sunt acceptate.

Dacă declarați un parametru drept matrice, acesta poate lua o serie de valori:

Pentru a trece o serie de valori, trebuie să specificați aceeași opțiune de mai multe ori:

Comanda de mai sus va declansa actionIndex (array ('News', 'Article')).

De la versiunea 1.1.6, Yii vă permite să utilizați opțiuni de acțiune anonime și opțiuni globale.

Parametrii anonimi sunt opțiuni din linia de comandă care nu sunt opțiuni. De exemplu, în indexul site-ului yiic index-limit = 5 comanda News, apare un parametru anonim cu valoarea News. Limita parametrului (opțiune) numită are o valoare de 5.

Pentru a utiliza parametri anonimi, acțiunea ar trebui să descrie un parametru numit $ args:

Array args va conține toate valorile disponibile pentru parametrii anonimi.

Opțiunile globale sunt opțiuni de linie de comandă comune tuturor acțiunilor de comandă. De exemplu, este posibil să avem nevoie de o opțiune verbală comună pentru o comandă cu mai multe acțiuni. Desigur, puteți defini parametrul $ verbose pentru fiecare acțiune, dar este mai bine să o setați la proprietatea publică a clasei de comandă, care va face în mod automat o opțiune globală verbală:

Următorul cod vă permite să utilizați opțiunea verbose:

4. Codul de returnare ¶

Notă: capacitatea de a specifica codul de returnare din comanda consolei a apărut în versiunea 1.1.11.

Dacă executați automat comenzi ale consolei, de exemplu, utilizând cron sau utilizând serverul de integrare continuă, este important să știți dacă comanda a fost terminată cu o eroare sau cu succes. Acesta este exact ceea ce sunt codurile de retur.

Aceste coduri sunt valori întregi de la 0 la 254 (acest interval este specificat în PHP), unde 0 este returnat în caz de succes și toate celelalte valori sunt folosite pentru diferite erori.

Ca și în metoda run (). iar în acțiunile comenzii puteți returna un număr întreg. Acesta va fi folosit ca cod de retur.

Dacă comanda consolei nu returnează nimic, aplicația se termină cu codul 0.

5. Configurarea aplicației consolei ¶

În mod implicit, dacă se creează o aplicație utilizând webapp yiic. configurația aplicației de consolă este localizată în secțiunea protected / config / console.php. Ca și configurarea unei aplicații web, acest fișier este un script PHP care returnează un tablou cu valorile inițiale ale instanței aplicației console. Adică, în acest fișier puteți seta orice proprietate publică CConsoleApplication.

Deoarece comenzile consola sunt adesea create pentru a suporta o aplicație Web, trebuie să utilizați aceleași resurse (cum ar fi conexiunile bazei de date) utilizate în aplicația Web. Puteți face acest lucru prin configurarea componentelor corespunzătoare din configurația aplicației de consolă:

Formatul de configurare este foarte similar cu cel utilizat în aplicația web, deoarece atât CConsoleApplication, cât și CWebApplication moștenesc aceeași clasă de bază.







Articole similare

Trimiteți-le prietenilor: