Lær hva Utforsker er, hvordan den fungerer, og hvordan brukere bruker den til å navigere, administrere og samhandle med filsystemer og nettverksplasseringer.
Home
»
Kryptovaluta
»
KOMPONIST: FORKLARING AV PHP-AVHENGIGHETSHÅNDTERING
Composer revolusjonerte PHP ved å administrere avhengigheter effektivt
Composer er et verktøy for avhengighetshåndtering i PHP. Det lar utviklere administrere biblioteker som PHP-prosjektene deres er avhengige av, og sikrer konsistente versjoner på tvers av utviklings-, test- og produksjonsmiljøer. Composer, introdusert i 2012 av Nils Adermann og Jordi Boggiano, forenklet hvordan kodebiblioteker ble installert, oppdatert, automatisk lastet inn og versjonslåst, og løste et tilbakevendende problem i PHP-fellesskapet.
Før Composer måtte PHP-utviklere ofte manuelt laste ned biblioteker, inkludere dem og løse kompatibilitetsproblemer på egenhånd. Dette førte til forskjellige oppsett på tvers av miljøer, avhengighetshelvete og ineffektive utviklingsarbeidsflyter. Composer endret spillet ved å introdusere en standardisert og automatisert tilnærming til avhengighetshåndtering som ligner på verktøy i andre økosystemer som npm for JavaScript eller Bundler for Ruby.
Composer fungerer med composer.json-filen – et manifest som viser et prosjekts avhengigheter og begrensninger. Når en utvikler kjører composer install eller composer update, henter Composer de riktige versjonene av spesifiserte pakker fra Packagist (Composers standard pakkelager) og installerer dem i en standardstruktur i vendor-mappen.
Viktige funksjoner i Composer
- Avhengighetsløsning: Bestemmer automatisk hvilke versjoner av nødvendige biblioteker som er kompatible med hverandre.
- Automatisk lasting: Gir en autolaster basert på PSR-4-standarder, noe som reduserer behovet for tilpassede inkluderinger eller krav.
- Versjonslåsing:
composer.lock-filen sikrer konsistens på tvers av utvikling, QA, staging og produksjon ved å låse eksakte versjoner. - Skript: Støtter tilpassede skript som skal kjøres før eller etter installasjonshendelser.
- Globale pakker: Støtter global installasjon av utviklingsverktøy (f.eks. PHPUnit, PHP_CodeSniffer).
Composer banet vei for at PHP-applikasjonsrammeverk kan være modulære og pakkedrevne. Symfony, Laravel, Drupal 8+ og andre moderne rammeverk er sterkt avhengige av Composer for økosystemets arkitektur.
Til syvende og sist profesjonaliserte Composer PHP-utvikling ved å fremme bedre avhengighetshygiene, støtte semantisk versjonering og oppmuntre til en kultur med gjenbrukbar, delbar kode gjennom Packagist.
Betydningen av Composer for PHP-økosystemet kan ikke overvurderes. Da det ble lansert i 2012, hadde PHP blitt et av de mest brukte programmeringsspråkene for webutvikling, men det manglet et sentralisert, fellesskapsdrevet system for å administrere tredjepartsbiblioteker. Utviklere måtte ofte kopiere og lime inn kode eller stole på utdaterte verktøy som PEAR (PHP Extension and Application Repository). Composer endret denne fortellingen drastisk.
1. Forening av PHP-økosystemet: Composer gjorde det mulig for utviklere å spesifisere, dele og løse avhengigheter med presisjon. Med bred Composer-støtte ble PHP-prosjekter mer vedlikeholdbare og konsistente på tvers av installasjoner.
2. Tilrettelegging for samarbeid med åpen kildekode: Composer og standardlageret, Packagist, senket barrieren for å dele kode og bidra til prosjekter med åpen kildekode. I stedet for å finne opp hjulet på nytt med hvert nytt prosjekt, kunne utviklere komponere applikasjoner fra hundrevis av pakker av høy kvalitet som vedlikeholdes av fellesskapet. Dette akselererte innovasjon og produktivitet på tvers av økosystemet.
3. Støtte til moderne arkitektur: Composer oppmuntret til ren arkitektur gjennom frakoblede, modulære kodebaser. Rammeverk som Laravel innebygde Composer dypt i stillasene sine, noe som forsterket riktig avhengighetsinjeksjon og separasjon av bekymringer. Dette førte til at PHP-utvikling ble nærmere tilpasset beste praksis innen programvareutvikling på bedriftsnivå.
4. Desentralisering av beste praksis: Composer katalyserte fremveksten av PSR-bevegelsen (PHP Standards Recommendation) ved å oppmuntre til beste praksis innen navnekonvensjoner, automatisk lasting og kodestruktur. Verktøy som PHPStan, Psalm og PHP_CodeSniffer ble Composer-drevet, og bygde et økosystem av statiske analyse- og kvalitetssikringsverktøy rundt Composer.
5. Industriell adopsjon: Med Composer ble PHP-utvikling mer levedyktig for store bedrifter og SaaS-plattformer. Muligheten til å feste og revidere avhengigheter, håndheve sikre oppdateringer og kjøre reproduserbare bygg gjorde Composer til en kritisk del av DevOps-pipelines og CI/CD-prosesser.
Uten Composer ville PHP sannsynligvis ikke ha utviklet seg til det moderne språket det er i dag. Composer brakte orden, struktur og profesjonelle verktøy til det som ofte hadde blitt sett på som et "skript"-språkmiljø, noe som hjalp PHP med å holde seg konkurransedyktig i en verden med økende bruk av Python, Node.js og Ruby.
For å forstå Composers innvirkning fullt ut, er det viktig å forstå dens indre og indre virkemåte. Composer opererer primært gjennom et kommandolinjegrensesnitt og et avhengighetsløsningssystem innebygd i PHP. Slik utfolder prosessen seg bak kulissene:
1. Administrere composer.json-filen
composer.json-filen er kjernen i alle Composer-aktiverte prosjekter. Den inneholder metadata som prosjektnavn, beskrivelser, avhengigheter, nødvendige PHP-versjoner, konfigurasjon for automatisk lasting og valgfrie skript. Eksempel:
{"require": {"monolog/monolog": "^2.0"},"autoload": {"psr-4": {"App\": "src/"}}}2. Avhengighetsløsning via SAT Solver
Composer bruker en versjon av SAT (Boolean Satisfiability Problem)-løsningsalgoritmen for å bestemme et konsistent sett med pakkeversjoner som skal installeres, med tanke på alle begrensninger fra composer.json-filen og transitive krav fra avhengigheter.
Når det er løst, skriver Composer de endelige versjonene og deres kildeplasseringer til composer.lock. Dette sikrer deterministiske installasjoner på tvers av forskjellige miljøer.
3. Installasjon og leverandørautomatisk lasting
Pakker lastes ned fra Packagist (eller tilpassede arkiver) og lagres i vendor-mappen. Composer genererer dynamisk en effektiv PSR-4-basert autolaster i vendor/autoload.php, som gir umiddelbar tilgang til enhver klasse innenfor de definerte navnerommene.
4. Oppdatering av avhengigheter
Når du kjører composer update, oppdateres alle pakker til de nyeste versjonene som er tillatt av begrensningene. Dette endrer composer.lock. I mellomtiden installerer composer install nøyaktig de pakkene som er låst i composer.lock, noe som sikrer repeterbare bygginger.
5. Skripting og hooker
Composer støtter skript før og etter installasjon/oppdatering. For eksempel, for å kjøre automatiserte tester etter installasjon:
"scripts": {"post-install-cmd": ["phpunit"]}Skript kan kalle shell-kommandoer, Composer-plugins eller PHP-tilbakekallinger, noe som gir fleksibilitet til bygging, distribusjon eller valideringsarbeidsflyter.
6. Tilpassede repositorier og plugins
Selv om Packagist er standard repository, kan private eller bedriftsrepositorier defineres. I tillegg støtter Composer plugins som kan endre standardoppførsel, legge til nye kommandoer eller utvide interne prosesser.
Composer fungerer i bunn og grunn som en kontraktshåndhever mellom kodebasen din og avhengighetene den bruker. Med klare grenser, pålitelige installasjoner og støtte for automatisering, brakte Composer ingeniørdisiplin til PHP-avhengighetshåndtering og er fortsatt uunnværlig i moderne PHP-prosjekter.
DU KAN OGSÅ VÆRE INTERESSERT I DETTE