Het eerste gebruik
Nu Composer is geïnstalleerd kunnen we eindelijk aan de slag gaan met de praktijk waarin we als voorbeeld met een kleine bestaande package, genaamd Monolog, mee aan de slag gaan.
De packagelijst
Het belangrijkste deel van Composer is het bestand composer.json. Deze staat in hoofddirectory waar je jouw website in ontwikkelt. Hierin staan alle packages vermeld waar jouw webproject van afhankelijk is. Dit bestand heeft een JSON-formattering, en als voorbeeld gebruiken we in deze tutorial dus Monolog, een eenvoudige tool om data in je website te kunnen loggen naar textbestanden en databases. Uiteindelijk kan je in plaats van dit ook andere bestaande packages gebruiken.
Met Monolog als voorbeeld ziet composer.json er zo uit:
Let erop dat je dit bestand niet zelf aan hoeft te maken. Heb je het al aangemaakt, dan is het ook geen probleem.
We gaan even terug naar de inhoud van het bestand. De groep "require" geeft aan welke packages je toe wilt voegen aan je project, en welke versie dit is. In dit geval gaat het om de laatste versie van Monolog, en dat is dus de 3.2.x versie waarbij het laatste getal staat voor de versie uit deze reeks. Je zal dan altijd de nieuwste versie van Monolog krijgen.
Installeren van de packages
Je kan handmatig aan de composer.json steeds een nieuwe package toevoegen, maar dit is uiteindelijk met een flinke lijst behoorlijk tijdrovend. Ook heb je de kans dat je fouten kan maken met als gevolg dat je JSON-bestand corrupt raakt, wat je liever wilt voorkomen voorkomen. Daarom heeft Composer de mogelijkheid om via de CLI een package toe te voegen. Dit voer je uit in de directory van je webproject.
Voor Monolog wordt dit dus:
Als je goed oplet is er een directory /vendor geplaatst met een autoloader, waar we later op ingaan, en het Monolog-package. Mocht je nog geen composer.json bestand hebben, dan wordt deze vanzelf aangemaakt.
Speciaal voor packages bestaat er een bibliotheek waarin je deze packages met hun namen kan vinden. Dit heet Packagist.org. Als we naar die site gaan en we zoeken naar Monolog, dan zien we die require code bovenaan staan. Die zorgt er dus voor dat de composer.json wordt aangepast met de gekozen package en ook wordt deze meteen geïnstalleerd, samen met de nodige bijbehorende (hulp-)packages. Wil je die extra hulppackages niet omdat je ruimte wilt besparen, dan kan je --no-dev achter het commando plaatsen.
Houd er wel rekening mee dat het downloaden en installeren, afhankelijk van de hoeveelheid, enige tijd kan duren. Let er wel op dat Composer afhankelijk is van de /vendor directory, en dat het niet de bedoeling is om zelf aanpassingen in deze directory te doen of daar scripts te bewerken. In dat geval zul je het script moeten 'forken' in bijvoorbeeld GitHub, maar dat laat ik in dit artikel buiten beschouwing.
Verwijderen van de packages
Mocht je een package willen verwijderen, dan kan dat weer eenvoudig met met remove commando. Dus voor Monolog gebruik je dit:
Ook de Autoloader waarover het het in het volgende hoofdstuk zullen hebben zal het script dan niet meer inladen. Wel moet je in jouw code de instantie en namespaces die naar de class verwijst weer netjes verwijderen. Het houdt weliswaar je packages op orde, maar niet je eigen script.
Update van alle packages
Met het 'composer update' commando worden alle packages geüpdated in de /vendor directory. Als je bepaalde packages al hebt, dan zal je daarvan de nieuwste versie krijgen. Deze is afhankelijk van wat er in je composer.json staat. Mocht je in de composer.json hebben staan dat je van een specifieke package versie 3.2 hebt, en versie 3.3 is door de ontwikkelaar uitgebracht, dan zal je altijd versie 3.2 krijgen, tenzij je packageconfiguratie aanpast. Zo is de kans klein dat je webapplicatie opeens zal 'breken' omdat de ontwikkelaar bijzondere aanpassingen gedaan heeft die jij moet doorvoeren.
Installeren van alle packages
Met het 'composer install' commando worden alle packages die beschreven zijn in composer.lock geïnstalleerd in de /vendor directory. In de praktijk doe je dit als je een nieuw website-project binnenhaalt en nog geen /vendor map hebt maar wel composer.lock. Wat composer.lock doet, leggen we in het volgende hoofdstuk uit.
Inhoudsopgave
- Wat is Composer?
- Installatie van Composer
- Het eerste gebruik
- De werking van composer.lock
- De Autoloader uitgelegd
- Extra mogelijkheden met Composer