Înainte de a începe să lucrez la proiectul actual, nu credeam că va trebui să folosesc instrumente pentru a construi automat proiecte. La urma urmei, lucrez exclusiv cu limbi interpretate care nu au nevoie de compilare. Cu toate acestea, după cum sa dovedit, ele pot fi utile atunci când se dezvoltă pe PHP, și mai ales atunci când lucrează cu Joomla!
Înainte de a lucra pe orice site special, fac modificările necesare în fișierele și baza de date de pe serverul local, verificați dacă totul funcționează corect, apoi prin ftp-client pe phpMyAdmin și să copiați fișiere și modificări de baze de date pe site-ul de lucru. Dacă nu mi-am amintit ce fișiere am corectat și de obicei se întâmplă, am copiat totul.
În activitatea de proiectare curentă se face pe serverul local, atunci modificările sunt transferate la testul, și numai apoi lucrătorului. Și ultima acțiune pe care clientul trebuie să o poată efectua independent. Soluția pentru acest lucru în Joomla este - fișierele de instalare pentru pachetul de extensie, plus toate extensiile din pachet. În acest fel, clientul poate actualiza toate extensiile făcând o singură acțiune. Și ce ar trebui să facă dezvoltatorul? Pentru componenta pe care doriți să copiați: administrativ și partea frontală a directorului dosar media (anterior a fost necesar pentru a copia și chiar fișierele de limbă, dar folosind un nou standard de cazare, sunteți scutit de acest lucru). Apoi trebuie să mutați fișierul manifest din folderul administrativ în rădăcină și să faceți totul înapoi. Totuși, este de dorit să specificați numărul versiunii în numele arhivării. Când toate extensiile sunt compilate, ambalați-le pe toate și fișierul manifest de pachete într-o singură arhivă. Se pare că nu este nimic complicat, dar numai în timp ce nu există prea multe prelungiri. Și dacă există mai mult de o duzină (în cazul meu 21, și numărul lor crește)? Și dacă din când în când trebuie să faceți schimbări rapide și să trimiteți pachetul actualizat?
Aici am fost nedumerit de problema asamblării automate. În acel moment, știam doar despre Ant. După ce am început să-i studiez posibilitățile, am aflat despre Maven. Dar m-am jenat că, dacă dintr-o dată nu am suficiente trăsături disponibile, va trebui să scriu în Java. Așa că am continuat căutarea și l-am găsit pe Phing, un colector de proiecte pentru PHP. După ce i-am făcut cunoștință cu capacitățile sale, mi-am dat seama rapid că are tot ce aveți nevoie:
- operațiuni cu fișiere și directoare;
- lucrează cu arhive;
- citirea proprietăților din fișiere xml (puteți utiliza datele din manifest);
- operațiuni de lucru cu sisteme de control al versiunilor (cvs, svn, git);
- suport pentru ftp și http;
- executarea comenzilor externe;
- executarea codului PHP;
- teste unitare de funcționare;
- lucrează cu baza de date;
- multe alte caracteristici care sunt extinse cu ajutorul plug-in-urilor gata făcute sau realizate automat în PHP.
Instalarea Phing
Cel mai simplu mod de a instala Phing folosind PEAR. Pentru a face acest lucru, introduceți doar două comenzi în consola:
Dacă nu utilizați PEAR, atunci pe site-ul oficial există o instrucțiune despre cum să instalați Phing manual.
Conectarea la NetBeans
Următorul pas după instalare este conectarea la IDE-ul pe care îl utilizați. Eu folosesc NetBeans, pentru că există un plugin phingKing pentru executarea sarcinilor de la IDE. Începând cu versiunea 7.3, acesta poate fi instalat direct de la managerul plug-in. În versiunile anterioare, va trebui să descărcați plug-in-ul și să îl instalați din fișier.
După instalare, elementul Phing Targets apare în meniul Windows. În această fereastră sunt afișate sarcinile Phing:
- Preferințe - sarcinile selectate;
- Subtarget-urile sunt sub-sarcini (sarcini a căror execuție este inclusă într-o sarcină mai generală);
- Tinta implicita este sarcina implicita.
În setările NetBeans din secțiunea PHP apare o filă PhingKing în care trebuie să specificați calea către Phing. În proprietățile proiectului din secțiunea corespunzătoare, trebuie să specificați calea spre fișierul xml cu sarcinile (mai multe despre aceasta mai târziu).
Utilizarea din linia de comandă
Utilizarea Phing-ului din linia de comandă este de asemenea ușor. sarcini loc într-build.xml și rula script-ul Phing în același director sau specificați o cale pentru fișier XML în parametrul -buildfile. Puteți obține setul complet de parametri prin rularea phing -help.
Crearea de sarcini
Sarcinile pentru Phing sunt scrise în fișierul xml (implicit build.xml). În mod implicit, sarcina rulează numai una specificată în proprietățile proiectului ca implicit, dar poate fi specificat în funcție de alte sarcini, dintre care fiecare poate avea, de asemenea, dependențele sale, iar acestea vor fi îndeplinite. Întregul proiect este în eticheta proiectului și fiecare activitate din eticheta țintă.
Fișierul de sarcini cel mai simplu arata astfel:
Ca rezultat, veți vedea:
Extinderea clădirilor Joomla
Acum, să facem Phing ceva util - să construim un pachet cu extensii pentru Joomla.
Condiții de bază:
- dezvoltarea se face în directorul / opt / lampp / htdocs / mysite
- Am pus pachetul finit în / home / user1 / mysite
- sursa fișierelor de extensie la / home / user1 / mysite / src
- fișiere de extensie cu numere de versiune în / home / user1 / mysite / zip
- fișiere extensibile fără numere de versiune în / home / user1 / mysite / cache
Notă: fișierele cu numere de versiune sunt convenabile pentru a fi utilizate ca și cele independente, dar fără numere pentru a simplifica asamblarea pachetului.
La prima vedere pare un pic înfricoșător, dar în realitate nu este nimic complicat. Pentru cele mai multe extensii, codul poate fi copiat numai cu modificări minore. Da, și este extrem de rar. Dar cu un singur click primim un pachet cu versiunile curente ale tuturor extensiilor dezvoltate.