Gestionare ușoară a pachetelor cu compozitor

Să facem față: PHP a avut o istorie stâncoasă cu gestionarea pachetelor și, ca rezultat, este destul de rară găsirea unui dezvoltator care folosește în mod activ sisteme cum ar fi PEAR. În schimb, majoritatea dezvoltatorilor și-au ales cadrul preferat, care are cod special creat pentru a gestiona diverse lucruri, cum ar fi interacțiunea DB, ORM, OAuth, integrarea Amazon S3 etc..

Dezavantajul este însă acela că schimbarea cadrelor (sau întoarcerea la a nu folosi deloc un cadru) poate fi un coșmar, deoarece implică relararea totului pentru a folosi instrumente noi - și nu este o sarcină ușoară. Compozitorul poate rezolva asta!


Introducere

"Adezivul dintre toate proiectele."

Compozitorul dorește să rezolve această situație prin poziționarea ei ca "lipici între toate proiectele" - ceea ce înseamnă că pachetele pot fi scrise, dezvoltate și partajate într-un format pe care alți dezvoltatori îl pot conecta cu ușurință în alte aplicații.

Acest articol vă arată cum să instalați și să lucrați cu pachetele Composer. Până la sfârșitul acestui articol, veți putea să conectați și să jucați cu bucăți de cod în orice cadru, fie că lucrați cu CodeIgniter, FuelPHP, Laravel, Symfony2, Litiu, Yii, Zend ... sau orice altceva.


Pasul 1 - Instalarea compozitorului

Compozitorul are două părți principale logice: există un depozit care stochează pachete, iar apoi există aplicația pentru linia de comandă, care vă ajută să găsiți, să descărcați, să actualizați și să distribuiți codul.

Instalarea aplicației pe orice dispozitiv cu aromă Unix este ușor:

$ cd / path / to / meu / proiect $ curl -s http://getcomposer.org/installer | php

Este la fel de ușor ca asta! Veți avea acum o composer.phar fișierul enumerat în proiectul dvs., care conține toată logica utilității liniei de comandă.

Puteți confirma că a fost instalat executând:

$ php compozitor.phar

Această comandă va afișa toate comenzile disponibile.

O preferință personală a mea este de a rula o comandă suplimentară:

$ sudo mv compozitor.phar / usr / bin / compozitor

Acest mișcări fișierul în bin, care vă permite să accesați toate comenzile cu exemplul mult mai scurt:

$ compozitor despre

Dacă executați Windows, puteți să descărcați acest fișier și să îl rulați prin intermediul interpretului PHP - oriunde ar fi instalat.


Pasul 2 - Înțelegerea composer.json

Dacă sunteți un dezvoltator de Ruby, probabil veți fi familiarizat cu Gemfile. Sau dezvoltatorii nodurilor vor ști package.json. În mod similar, compozitorul folosește a composer.json fișier pentru a specifica setările și cerințele pachetului pentru aplicația dvs..

În forma sa cea mai de bază, fișierul compozitorului va arăta astfel:

"cer": "kriswallsmith / assetic": "*"

Acest lucru va necesita pachetul "Assetic", creat de "kriswallsmith", și va necesita orice versiune. Pentru a specifica o versiune specifică, puteți folosi în schimb:

"kriswallsmith / assetic": "1.0.3"

Puteți chiar combina cele două abordări, cum ar fi:

"kriswallsmith / assetic": "1.0. *"

Acest lucru va permite includerea automată a oricăror actualizări minore, dar nu se va face upgrade la 1.1.0, deoarece s-ar putea să aibă unele modificări ale interfeței pe care dezvoltatorul va trebui să le urmărească.


Pasul 3 - Cerințe de instalare

Acum că aveți unul sau mai multe pachete listate în cadrul dvs. composer.json, puteți rula:

$ php installer.phar install

... Sau, dacă mi-ai folosit trucul pentru a-l scurta pe mașinile Unix (vezi mai sus):

instalați $ compozitor

Acum veți observa că fișierele sunt descărcate și plasate într-un fișier nou vânzătorii / din rădăcina aplicației. Această logică poate fi modificată utilizând următoarea opțiune de configurare:

"necesită": "kriswallsmith / assetic": "1.0." "," config ": " vendor-dir ":" packages "

Pasul 4 - Autoloading

Autoloading în PHP a fost un pic de mizerie de ceva timp.

Autoloading în PHP a fost un pic de mizerie de ceva timp, ca fiecare dezvoltator are propriile sale moduri de a manevra lucruri. Unele pachete, cum ar fi Smarty, folosesc propriile lor autoloading, unii dezvoltatori plasează mai multe clase într-un singur fișier sau au nume de fișiere cu litere mici - este foarte aleator.

PSR-0 este un standard, creat de Grupul de Standarde PHP, pentru a calma acest dezastru; Compozitorul va lucra cu acesta în mod implicit. Composer cu un autoloader PSR-0, pe care îl puteți include în proiectul dvs. cu o singură linie:

include_once './vendor/autoload.php';

Evident, dacă ați schimbat directorul furnizorului, va trebui să îl actualizați.

Acum puteți utiliza codul în aplicațiile dvs.:

benă ();

Acesta este un exemplu de Assetic în uz. Da, există o mulțime de coduri de spațiu de nume acolo, dar acest lucru este făcut pentru a evita conflictele între pachete. Convenția de numire pentru PSR-0 este în esență:

\\ (\) *

Un alt exemplu ar putea fi pachetul HTTP Buzz, care arată astfel:

$ browser = Buzz \ Browser nou; $ answer = $ browser-> get ('http://www.google.com'); echo $ browser-> getLastRequest (). "\ n"; răspunsul echo $;

Ar putea să arate ca un glorificat file_get_contents (), dar se ocupă de tot felul de logică inteligentă în fundal pentru a lucra cu răspunsul / solicitarea HTTP - și puteți vedea că sintaxa spațiului de nume este puțin mai puțin intensă.


Pasul 5 - Lumea reală

Dacă vrei să fii foarte inteligent, poți automatiza întregul proces.

În prezent, majoritatea proiectelor stochează toate dependențele de PHP în depozitul de coduri principale; astfel încât, dacă utilizați SDK-ul Facebook, de exemplu, trebuie doar să împingeți acea versiune în cod prin copierea pastei de cod de la GitHub sau extragerea unui fișier ZIP. Apoi, îl adăugați la sistemul de versiuni și împingeți modificările.

Această versiune se află apoi cu codul dvs. ca fișier static, care, la un moment dat, vă poate sau nu să nu uitați să faceți upgrade - DACĂ observați că Facebook a lansat o versiune actualizată. Noua versiune a fișierului trece peste partea de sus și apăsați și acele noi modificări.

Tu poate sa utilizați compozitorul pentru a evita necesitatea de a acorda atenție versiunilor și doar executați o actualizare și comiteți toate modificările. Dar de ce aveți în depozitul dvs. multe coduri pe care nu trebuie să le aveți acolo?

Soluția neatest este de a adăuga vânzătorii / în lista "Ignoră" (ex .: .gitignore) și păstrați-vă codul în întregime. Când implementați codul în gazdele dvs., puteți rula doar compozitorul instala sau compozitor.

Dacă vrei să fii cu adevărat inteligent, poți automatiza întregul proces, deci dacă ai găzduire în cloud, poți configura cârlige pentru a rula compozitorul instala imediat ce va apăsa noul cod!


rezumat

Veți începe să vedeți mai mult compozitorul înainte, deoarece diferite cadre PHP au început să ofere diferite niveluri de integrare; FuelPHP va fi construit ca pachete Composer, CodeIgniter va suporta autoloading, iar Symfony2 îl folosește deja pe scară largă.

Compozitorul este o modalitate foarte bună de a adăuga dependențe la proiectele dvs. fără a fi nevoie să instalați extensii PECL sau să copiați și să lipiți o grămadă de fișiere. Acest mod de a face lucrurile este extrem de depășit și necesită prea mult din timpul dezvoltatorului.

Cod