Hoe de ingebouwde Composer van ServBay te gebruiken voor PHP-projectbeheer
Als krachtige lokale webontwikkelomgeving wordt ServBay geleverd met een vooraf geïnstalleerde Composer, wat het beheren van afhankelijkheden voor PHP-projecten sterk vereenvoudigt. Composer is onmisbaar in moderne PHP-ontwikkeling: het helpt ontwikkelaars bij het eenvoudig integreren en beheren van externe bibliotheken, regelt automatisch complexe afhankelijkheden en biedt handige autoload-functionaliteit. Dankzij ServBay kun je Composer direct gebruiken zonder aparte installatie of configuratie, zodat je je PHP-ontwikkelworkflow versnelt.
Introductie tot Composer
Composer is een tool voor het beheren van afhankelijkheden binnen PHP-projecten. Hiermee kunnen ontwikkelaars aangeven van welke externe pakketten (libraries, frameworks, componenten, plugins, enz.) hun project afhankelijk is, waarna Composer deze automatisch installeert en bijwerkt.
Belangrijkste kenmerken
- Afhankelijkheidsbeheer: Composer behandelt automatisch de afhankelijkheden binnen je project, zorgt voor compatibele versies van alle libraries en lost potentiële conflicten op.
- Autoloading: Composer biedt autoloading door een centrale autoload-bestand te genereren. Zo hoef je niet handmatig klassen te includen of te requiren—alle via Composer geïnstalleerde klassen zijn direct beschikbaar.
- Versiebeheer: In het
composer.json
-bestand kun je versiebeperkingen voor libraries definiëren. Composer downloadt dan de juiste versies en legt die incomposer.lock
vast, zodat iedereen in het team of iedere server exact dezelfde dependency-versies gebruikt. - Pakketbeheer: Composer haalt pakketten voornamelijk uit de centrale repository Packagist, waar je bijna alle populaire PHP-libraries kunt vinden en integreren.
- Community-ondersteuning: Composer heeft een grote, actieve community en uitgebreide documentatie.
Composer geïntegreerd in ServBay
ServBay bevat meerdere PHP-versies en wordt standaard geleverd met Composer vooraf geïnstalleerd. Je hoeft Composer dus niet apart te downloaden of te configureren. Composer is direct beschikbaar in je systeemomgeving, gekoppeld aan de actieve PHP-versie van ServBay, zodat je eenvoudig de commandoregel composer
of desgewenst composer-2.2
kunt gebruiken.
Let op
Er zijn twee hoofduitvoeringen van Composer: de nieuwste Composer 2.8.x
(voor PHP 7.2+
) en de compatibele Composer 2.2.x LTS
(voor PHP 5.3 – PHP 7.1
).
Standaard wordt Composer 2.8.x
meegeleverd met ServBay, bedoeld voor PHP 7.2+
.
Wil je Composer gebruiken met PHP 5.3 – PHP 7.1
? Installeer dan in het “Pakketten”-gedeelte de Composer 2.2.x LTS
-versie en gebruik de opdracht composer-2.2
om deze te starten. Deze versies functioneren volledig onafhankelijk van elkaar.
Afhankelijkheden beheren met Composer
Composer beheert de afhankelijkheden van een project via het composer.json
-bestand in de hoofdmap van je PHP-project. Hier lees je hoe je zo’n bestand aanmaakt en gebruikt.
1. Een composer.json
-bestand aanmaken
Maak in de hoofdmap van je PHP-project een bestand genaamd composer.json
aan. Werk je bijvoorbeeld in /Applications/ServBay/www/my_php_project
, maak dan daar dit bestand aan.
Het composer.json
-bestand is een JSON-object. Onder de sleutel require
geef je aan welke pakketten je nodig hebt. De sleutel is de naam van het pakket (meestal in het formaat vendor/naam
) en de waarde geeft de gewenste versiegrenzen aan.
Bijvoorbeeld, om de Monolog-bibliotheek (populaire PHP-logger), minimaal versie 2.0, toe te voegen:
json
{
"require": {
"monolog/monolog": "^2.0"
}
}
1
2
3
4
5
2
3
4
5
De notatie ^2.0
betekent "compatibel met versie 2.0.0 en hoger, maar niet met 3.0.0 of hoger".
2. Afhankelijkheden installeren
Open een terminal in de projectmap met composer.json
en voer het volgende commando uit:
sh
composer install
1
Wat er gebeurt:
- Composer leest het
composer.json
-bestand uit. - Bepaalt alle benodigde afhankelijkheden (inclusief onderliggende).
- Downloadt deze libraries in de
vendor
-map in je project. - Genereert een
composer.lock
-bestand, waarin exact vastligt welke versies geïnstalleerd zijn. Let op: commit dit bestand naar je versiebeheer (zoals Git) zodat iedereen dezelfde versies gebruikt. - Maakt het autoload-bestand
vendor/autoload.php
aan.
Na afloop vind je de map vendor
en het bestand composer.lock
in je projectdirectory.
Composer's Autoloading gebruiken
Eén van de krachtigste functies van Composer is autoloading. Composer volgt gangbare standaarden (zoals PSR-0, PSR-4) om klasnamen te mappen naar bestandspaden, en genereert zo een universeel autoload-bestand.
Dit is hoe je het instelt en gebruikt:
1. Het autoload
-veld instellen
Voeg het veld autoload
toe of wijzig het in je composer.json
. Bijvoorbeeld, om de namespace App\
te koppelen aan de src/
-map:
json
{
"require": {
"monolog/monolog": "^2.0"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Dit betekent dat elke klasnaam die begint met App\
wordt gezocht in de map src/
(bijvoorbeeld App\MyClass
bestaat als src/MyClass.php
).
2. Het autoload-bestand genereren
Na aanpassen van de autoload
-configuratie, of om hem te verversen, voer je uit:
sh
composer dump-autoload
1
Hiermee wordt het bestand vendor/autoload.php
opnieuw gegenereerd. Installeer of update je enkel afhankelijkheden en heb je niks aan de autoload-structuur gewijzigd? Dan wordt dit automatisch bijgewerkt door composer install
of composer update
.
3. Het autoload-bestand in je code gebruiken
Voeg bovenin je PHP-scripts deze require toe:
php
<?php
// Importeer het Composer autoload-bestand
require __DIR__ . '/vendor/autoload.php';
// Nu kun je alle via Composer beheerde libraries of geconfigureerde klassen direct gebruiken
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use App\MyClass; // Als de App\-namespace is ingesteld
// Monolog gebruiken
$log = new Logger('name');
$log->pushHandler(new StreamHandler('your.log', Logger::WARNING));
$log->warning('Dit is een waarschuwing!');
// Je eigen klassen gebruiken (mits autoload correct is geconfigureerd)
// $myObject = new MyClass();
// $myObject->doSomething();
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Door require __DIR__ . '/vendor/autoload.php';
in te voegen, worden alle via Composer gemanagede klassen automatisch beschikbaar. Je hoeft niet meer voor iedere bibliotheek require
of include
te gebruiken: een grote winst in eenvoud!
Afhankelijkheden updaten
Je project ontwikkelt zich—soms wil je een nieuwere versie van een library installeren.
Open een terminal in de hoofdmap van je project en voer uit:
sh
composer update
1
composer update
controleert op nieuwere versies van alle afhankelijkheden volgens de beperkingen incomposer.json
(ook voor onderliggende afhankelijkheden).- Waar een nieuwe versie voldoet, wordt deze geïnstalleerd.
- Het bestand
composer.lock
wordt bijgewerkt naar de nieuwe situatie.
Belangrijk:
composer install
vscomposer update
: Gebruikcomposer install
altijd bij het opzetten of deployen van een project: dit installeert exact de versies uitcomposer.lock
zodat iedereen een gelijkwaardige omgeving heeft. Gebruikcomposer update
alleen om afhankelijkheden actief te updaten (en commit daarna de gewijzigde bestanden). Werk je samen in een team, voer dan enkel bij bewuste upgrades een update uit.
Let op bij Composer-gebruik binnen ServBay
ServBay maakt lokale ontwikkeling makkelijk, maar houd rekening met de volgende punten:
- Terminalomgeving: Zorg dat je Composer-commando’s uitvoert in een terminal die vanuit ServBay is geopend. Meestal voegt ServBay automatisch het geselecteerde PHP-pad toe aan je systeem, zodat je direct
php
encomposer
kunt gebruiken. Zie jecommand not found
-fouten? Heropen dan de terminal of controleer of ServBay actief is. - PHP-versie: Wissel eenvoudig tussen PHP-versies in ServBay. Het
composer
-commando gebruikt altijd de op dat moment via ServBay actieve PHP-versie. Wil je Composer draaien met een specifieke PHP-versie (voor bijvoorbeeld oude dependencies), zet deze dan eerst actief in het bedieningspaneel van ServBay. - Projectpad: Het wordt aangeraden je webprojecten onder de standaard root
/Applications/ServBay/www
te plaatsen, en via het ServBay-paneel een site te configureren. Composer-commando’s voer je eenvoudig uit in de projectsubmap.
Voorbeeldproject: Werken met de GuzzleHttp-bibliotheek
Hier volgt een eenvoudig voorbeeld voor het installeren en gebruiken van de populaire GuzzleHttp library in ServBay.
Projectmap aanmaken en openen: Maak vanuit de website-root een nieuwe map en navigeer ernaartoe:
shcd /Applications/ServBay/www mkdir guzzle_demo.servbay.demo cd guzzle_demo.servbay.demo
1
2
3Hier gebruiken we een demodomein in lijn met de ServBay-namingconventie.
composer.json aanmaken: Maak in
guzzle_demo.servbay.demo
eencomposer.json
aan met:json{ "require": { "guzzlehttp/guzzle": "^7.0" }, "autoload": { "psr-4": { "App\\": "src/" } } }
1
2
3
4
5
6
7
8
9
10We configureren meteen PSR-4 autoloading, wat goed is voor later gebruik.
Afhankelijkheden installeren: Installeer dependencies in de map met:
shcomposer install
1Composer downloadt GuzzleHttp en alle benodigdheden, en maakt de map
vendor
en het bestandcomposer.lock
aan.PHP-bestand maken en dependency gebruiken: Maak in je map een bestand
index.php
aan:php<?php // Importeer het Composer autoload-bestand require __DIR__ . '/vendor/autoload.php'; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; echo "<h1>GuzzleHttp Demo</h1>"; echo "<pre>"; try { // Guzzle client aanmaken $client = new Client(); // GET-verzoek uitvoeren $response = $client->request('GET', 'https://httpbin.org/get', [ 'query' => ['param1' => 'value1', 'param2' => 'value2'] ]); // Inhoud van de response body ophalen $body = $response->getBody()->getContents(); echo "Response Body:\n"; echo $body; // Statuscode van de response ophalen $statusCode = $response->getStatusCode(); echo "\n\nStatuscode: " . $statusCode; } catch (RequestException $e) { // Fout bij het versturen van het verzoek afhandelen echo "Request Exception:\n"; echo $e->getMessage(); if ($e->hasResponse()) { echo "\nResponse Status: " . $e->getResponse()->getStatusCode(); echo "\nResponse Body: " . $e->getResponse()->getBody()->getContents(); } } catch (\Exception $e) { // Overige fouten afhandelen echo "Er is een fout opgetreden:\n"; echo $e->getMessage(); } echo "</pre>"; ?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44Dit bestand importeert de autoloader en gebruikt de GuzzleHttp-client om data op te halen via een test-API.
ServBay website instellen: Ga naar het ServBay-configuratiescherm, navigeer naar het tabblad “Websites” (voorheen “Hosts”), en voeg een nieuwe website toe die wijst naar
/Applications/ServBay/www/guzzle_demo.servbay.demo
. Stel het domein in opguzzle_demo.servbay.demo
, sla op en herstart de relevante webserver (zoals Caddy of Nginx).Toegang via browser: Open in je browser
http://guzzle_demo.servbay.demo/
. Je zou nu het uitvoerresultaat van je PHP-script moeten zien – de data vanhttps://httpbin.org/get
.
Veelgestelde vragen (FAQ)
Q: Ik gebruik PHP 5.6, maar Composer werkt niet goed. Wat nu?
A: Voor PHP 5.6 biedt ServBay twee Composer-versies: de standaard 2.8.x en de 2.2.x LTS voor oudere PHP’s. Installeer de Composer 2.2 LTS
-versie en gebruik het commando composer-2.2
.
Q: Wanneer ik composer
in de terminal typ, krijg ik command not found
. Wat kan ik doen?
A:
- Controleer of ServBay actief is.
- Sluit je terminal volledig af en open opnieuw—zo worden de omgevingsvariabelen opnieuw geladen.
- Controleer in het ServBay-configuratiescherm of je een PHP-versie geactiveerd hebt.
- Werkt het nog niet? Probeer dan Composer op te starten via het volledige pad van de juiste PHP en Composer-versie, bijvoorbeeld
/Applications/ServBay/php/8.2/bin/php /usr/local/bin/composer install
(controleer indien nodig de juiste paden). Normaliter volstaat echter het eenvoudigecomposer
-commando dankzij ServBay.
Q: Hoe stel ik in dat Composer een specifieke PHP-versie vanuit ServBay gebruikt?
A: Composer gebruikt altijd de op dat moment via ServBay actieve PHP-versie. Wil je wisselen? Kies gewoon de gewenste PHP onder het ServBay-tabblad "PHP" als actief en open daarna een nieuwe terminal om Composer te starten.
Q: Waarvoor dient het composer.lock
bestand? Moet ik dit bestand in Git zetten?
A: composer.lock
legt exact vast welke dependency-versies op het moment van installeren of updaten gebruikt zijn. Voeg dit bestand altijd toe aan je versiebeheer (zoals Git): zo voorkom je "het werkt op mijn computer maar niet bij jou"-problemen en garandeer je gelijke afhankelijkheden op alle omgevingen. Anderen die jouw repository clonen en composer install
draaien, krijgen hierdoor identieke versies als bedoeld.
Samenvatting
Met de ingebouwde Composer-integratie biedt ServBay PHP-ontwikkelaars een efficiënte, probleemloze lokale ontwikkelomgeving. Je beheert eenvoudig afhankelijkheden, maakt gebruik van autoloading en wisselt soepel tussen PHP-versies, zodat je je kunt richten op het bouwen van je applicatie. Het combineren van ServBay en Composer is een moderne en robuuste aanpak voor PHP-ontwikkeling — hiermee bouw en onderhoud je projecten sneller, stabieler en met meer vertrouwen.