phpcomposersatisrepository
Cu toții iubim compozitor. Acesta a schimbat în mod semnificativ modul de construire a aplicațiilor PHP bazate pe componente mici, reutilizabile, dar acest lucru creează noi probleme, mai ales atunci când avem un singur punct de eșec. Cu Satis. putem face procesul de calcule mai robuste și a adăugat redundanță pentru toate punctele potențiale de eșec (Packagist și GitHub). Să vedem cum funcționează.
Cum Composer?
Graficul de mai jos arată cum Compozitor folosind Packagist ca un depozit central:

Dacă precizăm că dorim să folosim un depozit diferit, atunci Composer utilizează magazia implicită: Packagist. Compozitor solicită informații Packagist cu privire la toate pachetele necesare pentru a composer.json fișier. precum și dependențele necesare pentru aceste pachete.
Când Compozitor devine toate informațiile pe care le permite graficului de dependență folosind SAT Solver și generează un fișier de pachete specifice composer.lock care trebuie să fie instalat pentru a îndeplini cerințele solicitate în dosarul composer.json. În cele din urmă, compozitor încarcă aceste pachete dintr-o varietate de surse: GitHub, BitBucket, PERE sau orice depozit GIT / SVN / Mercurial.
Această arhitectură are mai multe probleme: ce s-ar întâmpla dacă Packagist cad? Acesta nu va funcționa. Compozitor nu poate rezolva graficul de dependență. În plus față de această problemă, ceea ce se întâmplă dacă pachetele necesare sunt plasate în GitHub'e, iar el nu lucrează în prezent? Acesta nu va funcționa. Pachetele nu vor fi încărcate, aceasta va afecta designul și calculele.
Cum putem minimiza toate aceste probleme? Adăugarea redundanță. Putem crea propriul nostru depozit folosind satis. Utilizarea magaziei în loc de (sau în plus față) Packagist. Graficul de mai jos arată aceeași diagramă, dar cu utilizarea de depozitare speciale:

Acum, Compozitor solicită informații despre pachetele necesare în seiful nostru personal și va face apel la Packagist numai în cazul în care depozitul nostru nu are aceste informații. Putem dezactiva chiar Packagist și personaliza depozitul nostru, astfel încât toate dependențele de pachete sunt încărcate în ea. În plus, magazinul nostru se poate descărca pachete și acționează ca un server proxy invers. Astfel, nu mai suntem dependenți de GitHub'a pentru a descărca pachete.
Putem seta Satis folosind Compozitor:
fișier de configurare depozit
Să ne imaginăm că suntem o companie cu mai mulți dezvoltatori și proiectele noastre au nevoie de doar două loturi: componenta HttpFoundation Symfony și crenguță. Ne dorim să avem un depozit personal cu toate versiunile (cu excepția versiunii de dezvoltare) a acestor două pachete și nu ar trebui să se bazeze pe GitHub:
Formatul de fișier este destul de simplu, dar să vedem ce înseamnă fiecare câmp:
- „Nume“. Numele magazinului.
- „Pagina de start“. Adresa URL a depozitului.
- "Repositories". Acesta conține o listă de arhive pe care dorim să le reflecte.
- "Necesită-all". descărca toate pachetele, nu numai cele care sunt etichetate.
- „Necesită-dependențe“. dacă valoarea este „true“, Satis rezolvă și adaugă automat toate dependențele, astfel încât să nu Composer'u trebuie să utilizați Packagist.
- „Arhiva“. „Tar“ fișierele vor fi stocate în directorul „dist“ și nu vom avea nevoie pentru a descărca pachetele „dev“.
Apoi, noi spunem Satis a crea un depozit:
În cele din urmă, vom publica depozitul nostru folosind PHP-shnogo serverul integrat (pentru depozitare reală se recomandă utilizarea Apache sau Nginx):

Utilizarea Composer depozit
Odată ce magazia a câștigat, pasul final trebuie să spun Composer'u pe care vrem să-l folosească. Acest lucru se poate face prin adăugarea de următoarele linii pentru a composer.json fișierul de proiect.
După aceea, când executați compozitor instalat va fi utilizat de către magazinul nostru:
În plus, putem vedea interogările care fac Compozitor, pentru a obține un prim depozit, și apoi pachetul în sine (packages.json inclusiv /include/all$e0f2af5bfe26328fcc97241cbd95de682f4fbfaa.json.):