Een PHPixie-project maken en uitvoeren op macOS met ServBay
PHPixie is een lichtgewicht en krachtige PHP-framework, speciaal ontworpen voor de snelle ontwikkeling van webapplicaties. Het volgt het HMVC (Hierarchical Model-View-Controller) ontwerpmodel, biedt een overzichtelijke code-structuur en een efficiënte afhandeling. Vanwege zijn eenvoud, flexibiliteit en hoge prestaties is PHPixie populair bij veel ontwikkelaars.
Belangrijkste kenmerken en voordelen van PHPixie
- Lichtgewicht: De kern van PHPixie is zeer compact en bevat alleen de noodzakelijke onderdelen voor applicatieontwikkeling, waardoor het snel opstart en draait.
- Hoge prestaties: Het framework is geoptimaliseerd voor efficiëntie en kan moeiteloos gelijktijdige verzoeken verwerken, geschikt voor prestaties-kritische toepassingen.
- Makkelijk te leren: PHPixie biedt een duidelijke, eenvoudige API en uitgebreide documentatie, wat ontwikkelaars een snelle leercurve geeft.
- Flexibiliteit: Dankzij de losse koppeling van het framework kunnen ontwikkelaars eenvoudig externe libraries en componenten integreren, afhankelijk van de behoeften van het project.
- Actieve community support: PHPixie kent een actieve ontwikkelgemeenschap met veel third-party extensies en ondersteuningsbronnen.
Met PHPixie bouw je efficiënt hoogwaardige en performante webapplicaties, geschikt voor zowel kleine projecten als grote, bedrijfskritische toepassingen.
Een PHPixie-project aanmaken en uitvoeren met ServBay
In dit artikel leer je hoe je een PHPixie-project opzet en uitvoert binnen de lokale webontwikkelomgeving van ServBay. We maken gebruik van de ingebouwde PHP-omgeving, de Composer dependency manager en de 'Websites'-functionaliteit van ServBay om de webserver in te richten. Daarnaast leggen we uit hoe je het project lokaal toegankelijk maakt en databases/servers voor caching integreert.
Vereisten
- ServBay is geïnstalleerd en actief op macOS. ServBay bevat PHP, Composer, verschillende databases (MySQL, PostgreSQL, MongoDB, Redis, enz.) en de Caddy webserver.
- Basiskennis van command-line gebruik.
Een PHPixie-project aanmaken
Aanbevolen map voor websites
ServBay raadt aan om je lokale webprojecten te plaatsen in /Applications/ServBay/www
voor eenvoudige toegang en beheersing van permissies in ServBay.
- Controleer of Composer is geïnstalleerd: Composer is standaard meegeleverd met ServBay, dus handmatige installatie is niet nodig. Controleer dit via de terminal:
composer --version
. - Maak een projectmap aan: Maak binnen de aanbevolen hoofdmap van ServBay een nieuwe map voor je PHPixie-project en ga vervolgens naar deze map:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Maak een PHPixie-project met Composer: Voer in de projectdirectory de volgende Composer-opdracht uit om het PHPixie-template binnen te halen:bashComposer downloadt PHPixie en alle benodigde afhankelijkheden in de projectmap.
composer create-project phpixie/project .
1
De webserver configureren
Met de Websites-functie van ServBay stel je snel de Caddy-webserver in om je PHPixie-project correct te hosten.
Open de ServBay-applicatie.
Navigeer naar de lijst Websites.
Klik op ‘Nieuwe website toevoegen’.
Vul de websitegegevens in:
- Naam: Bijvoorbeeld
My First PHPixie Dev Site
(dit is de interne naam in ServBay). - Domein: Bijvoorbeeld
servbay-phpixie-test.local
(het lokale domain waarmee je de site in de browser opent). - Websitetype: Kies
PHP
. - PHP-versie: Selecteer de gewenste versie, bijvoorbeeld
8.3
. - Document Root (Website Root map): Wijs naar de
web
-map van je project:/Applications/ServBay/www/servbay-phpixie-app/web
.
Waarom de
/web
map?Het startbestand van een PHPixie-project is
web/index.php
. Voor veiligheid en goede praktijken stel je de webserver-root in op de map met dit startbestand, dus op deweb
map. Zo voorkom je dat gevoelige bestanden (configuraties,vendor
map etc.) direct via het web benaderbaar zijn.- Naam: Bijvoorbeeld
Sla de configuratie op. ServBay doet nu automatisch de Caddy-configuratie en past, indien nodig, je lokale hosts-bestand aan zodat
servbay-phpixie-test.local
naar de lokale ServBay-server verwijst.
Voor meer details zie Je eerste website toevoegen.
Voorbeeldcode toevoegen
Om te controleren of alles werkt en om database- en cache-integratie te demonstreren voegen we wat voorbeeldcode toe aan het project.
Voorbeeldcontroller aanmaken: Voeg het volgende toe aan
src/App/HTTP/Controller/Home.php
. Maak directories handmatig aan als die nog niet bestaan.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Query-klasse importeren class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Standaard homepage actie public function action_index(Request $request) { // Render het template assets/templates/app/home.php return $this->template->render('app:home'); } // Voorbeeldactie met Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // Slaat data op, 60 sec geldig $value = $cache->get('key'); // Haalt data op return $this->response()->string($value); // Geeft string response terug } // Voorbeeldactie met Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // Data opslaan $value = $redis->get('key'); // Data ophalen return $this->response()->string($value); // Geeft string response terug } // Voorbeeldactie: gebruiker toevoegen met MySQL/PostgreSQL public function action_add_user(Request $request) { // Krijg een query builder via de databasecomponent $query = $this->components->database()->query(); // Voeg nieuwe gebruiker toe aan de 'users' tabel $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // Uniek e-mailadres ])->execute(); // Voer insert uit return $this->response()->string('User added successfully.'); // Succesmelding } // Voorbeeldactie: lijst gebruikers met MySQL/PostgreSQL public function action_list_users(Request $request) { // Krijg een query builder via de databasecomponent $query = $this->components->database()->query(); // Haal alle gebruikers uit de 'users' tabel $users = $query->select('*')->from('users')->execute()->fetchAll(); // Query uitvoeren en resultaten ophalen return $this->response()->json($users); // Geef gebruikerslijst terug als JSON } }
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67Voorbeeld-template aanmaken: Voeg de onderstaande code toe aan
assets/templates/app/home.php
. Maak directories handmatig aan als die nog niet bestaan.php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to PHPixie on ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Welcome to PHPixie on ServBay</h1> <p>This page is being generated dynamically by your PHPixie application running on ServBay.</p> <h2>Voorbeeld functionaliteiten:</h2> <ul> <li><a href="/home/memcached">Test Memcached</a></li> <li><a href="/home/redis">Test Redis</a></li> <li><a href="/home/add_user">Voeg gebruiker toe aan database</a></li> <li><a href="/home/list_users">Bekijk gebruikers in database</a></li> </ul> <p>Zorg ervoor dat je de vereiste stappen voor database- en cacheconfiguratie hebt afgerond.</p> </body> </html>
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
De website bezoeken
Na het instellen van de website in ServBay en het toevoegen van de voorbeeldcode kun je jouw site bezoeken via de browser:
- Open een browser en ga naar
https://servbay-phpixie-test.local
. - Je zou een pagina moeten zien met "Welcome to PHPixie on ServBay" en links naar voorbeeldfunctionaliteiten.
Als je geen toegang hebt, controleer dan het volgende:
- Draait ServBay?
- Is de siteconfiguratie binnen ServBay correct (vooral domein, type en root-map)?
- Wordt
servbay-phpixie-test.local
goed naar je lokale server verwezen in het hosts-bestand (ServBay regelt dit meestal automatisch)? - Staat de juiste PHP-versie in ServBay aan?
Voorbeelden van database- en cache-integratie
PHPixie ondersteunt verschillende database- en cache-systemen. ServBay bevat MySQL, PostgreSQL, Redis, Memcached en andere pakketten, die je eenvoudig kunt integreren in je PHPixie-project.
Belangrijk: Start de benodigde database-diensten (zoals MySQL of PostgreSQL) binnen ServBay vóórdat je databaseacties uitvoert en maak een database aan voor dit project. In dit voorbeeld heet de database servbay_phpixie_app
. Je kunt hiervoor ServBay’s database management tools (zoals Sequel Ace, Postico, TablePlus) of de command-line gebruiken. Standaard is de databasegebruiker meestal root
met het wachtwoord password
(controleer dit via je eigen ServBay-instellingen).
Databaseverbinding configureren
Afhankelijk van je gekozen database (MySQL of PostgreSQL), bewerk je het bestand assets/config/database.php
in de hoofdmap van je project. Het standaard adres is meestal 127.0.0.1
.
MySQL-configuratievoorbeeld (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// connection string aanpassen aan jouw database en ServBay-instellingen
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Standaardgebruiker van ServBay
'password' => 'password', // Standaardwachtwoord (pas aan indien veranderd)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
PostgreSQL-configuratievoorbeeld (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// connection string aanpassen aan jouw database en ServBay-instellingen
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Standaardgebruiker van ServBay
'password' => 'password', // Standaardwachtwoord (pas aan indien veranderd)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Een databasetabel aanmaken (migraties)
PHPixie heeft een CLI-tool voor database-migraties, waarmee je database-schema’s versiebeheer geeft.
- Open een terminal: Ga naar je projectmap:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Maak een migratiebestand aan: Gebruik de CLI-tool van PHPixie om een nieuwe migratie te genereren, bijvoorbeeld voor het aanmaken van de tabel
users
:bashHierdoor wordt een nieuw PHP-bestand inphp pixie generate:migration create_users_table
1assets/migrations
aangemaakt met een tijdstempel in de naam. - Bewerk het migratiebestand: Open het nieuwe bestand (zoals
YYYY_MM_DD_HHMMSS_create_users_table.php
) en definieer de structuur van deusers
-tabel in deup()
endown()
methodes:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Maak de 'users' tabel met de schema builder $this->schema->create('users', function(Table $table) { $table->increments('id'); // Auto-increment primaire sleutel $table->string('name'); // Naam kolom $table->string('email')->unique(); // Uniek e-mail kolom $table->timestamps(); // Kolommen created_at en updated_at }); } public function down() { // Verwijder de 'users' tabel met de schema builder $this->schema->drop('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - Voer de migratie uit: Draai in de projectmap het volgende commando om de tabel
users
aan te maken:bashAls alles goed gaat, krijg je een bevestiging in de terminal. Ook via een databasebeheerder kun je controleren ofphp pixie migrate
1servbay_phpixie_app
nu deusers
-tabel bevat.
Werken met relationele databases (MySQL/PostgreSQL)
In het voorbeeldcontrollerbestand src/App/HTTP/Controller/Home.php
zijn de methodes action_add_user
en action_list_users
al toegevoegd als demo voor interactie met MySQL of PostgreSQL via PHPixie.
- Gebruiker toevoegen: Ga naar
https://servbay-phpixie-test.local/home/add_user
om een nieuwe gebruiker in de tabelusers
op te slaan. - Gebruikerslijst tonen: Ga naar
https://servbay-phpixie-test.local/home/list_users
om alle gebruikers als JSON weergegeven te krijgen.
NoSQL-databases configureren en gebruiken (Memcached/Redis)
ServBay wordt geleverd met Memcached en Redis plus de benodigde PHP-extensies. Je hoeft deze alleen in je PHPixie-project te configureren:
Memcached-configuratie (assets/config/cache.php
):
Bewerk (of maak) het bestand assets/config/cache.php
en voeg de Memcached-configuratie toe:
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Standaardadres Memcached in ServBay
'port' => 11211, // Standaardpoort
'weight' => 100,
],
],
],
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Redis-configuratie (assets/config/redis.php
):
Bewerk (of maak) het bestand assets/config/redis.php
en voeg de Redis-configuratie toe:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Standaardadres Redis in ServBay
'port' => 6379, // Standaardpoort
'timeout' => 0,
'database' => 0, // Redis database-index
],
];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Memcached/Redis gebruiken:
In het eerder getoonde controlebestand (src/App/HTTP/Controller/Home.php
) zijn de methoden action_memcached
en action_redis
reeds aanwezig om te demonstreren hoe je caching inzet via Memcached of Redis in PHPixie.
- Memcached testen: Ga naar
https://servbay-phpixie-test.local/home/memcached
om een sleutel-waarde naar Memcached te schrijven en deze weer uit te lezen. - Redis testen: Ga naar
https://servbay-phpixie-test.local/home/redis
om een sleutel-waarde via Redis op te slaan en op te halen.
Let op: zorg dat de betreffende pakketten (Memcached en Redis) in ServBay zijn opgestart.
Samenvatting
Met deze stappen heb je succesvol een PHPixie-project lokaal opgezet, geconfigureerd en uitgevoerd binnen macOS met behulp van ServBay. Je hebt geleerd hoe je met Composer een project aanmaakt, hoe je via de Websites-functionaliteit van ServBay een webserver inricht, hoe je basisdatabase- en cache-integraties instelt, en hoe je deze functionaliteiten test.
ServBay’s geïntegreerde omgeving maakt het opzetten van een professionele PHP-ontwikkelomgeving eenvoudiger dan ooit, zodat je je volledig kunt richten op de ontwikkeling van je code. Hopelijk helpt deze gids je om snel van start te gaan met PHPixie en je volgende webproject tot een succes te maken!