Een PHPixie-project maken en uitvoeren op macOS met ServBay
PHPixie is een lichtgewicht en zeer snel PHP-framework, ontworpen voor het snel ontwikkelen van webapplicaties. Het volgt het HMVC (Hierarchical Model-View-Controller) ontwerpmodel, en biedt een overzichtelijke code-opzet en krachtige prestaties. PHPixie staat bekend om zijn eenvoud, flexibiliteit en hoge prestaties, en is geliefd bij veel ontwikkelaars.
Belangrijkste kenmerken en voordelen van PHPixie
- Lichtgewicht: De kern van PHPixie is zeer compact, bevat alleen de broodnodige componenten en start razendsnel op.
- Hoge prestaties: Door de efficiënte architectuur kan het framework gemakkelijk gelijktijdige verzoeken afhandelen, ideaal voor veeleisende toepassingen.
- Eenvoudig te leren: De API en documentatie zijn helder en overzichtelijk, zodat ontwikkelaars het framework snel onder de knie krijgen.
- Flexibiliteit: Dankzij de losgekoppelde opzet bepaal je zelf welke externe libraries en componenten je toevoegt op basis van je projectbehoeften.
- Actieve community: Een enthousiast netwerk van ontwikkelaars biedt talloze uitbreidingen en ondersteunende bronnen.
PHPixie helpt je om snel hoogwaardige webapplicaties te bouwen, geschikt voor zowel kleine als grootschalige bedrijfsprojecten.
Een PHPixie-project aanmaken en uitvoeren met ServBay
Deze gids laat zien hoe je een PHPixie-project opzet en lokaal draait met ServBay. Je gebruikt ServBay's geïntegreerde PHP, Composer package manager en de “Websites”-functionaliteit voor het instellen van de webserver, waarbij je eenvoudig toegang hebt tot je project en databases/caching integreert.
Vereisten
- ServBay dient geïnstalleerd en draaiend te zijn op macOS. ServBay bevat PHP, Composer, diverse databases (MySQL, PostgreSQL, MongoDB, Redis, etc.) en de Caddy-webserver.
- Je bent bekend met basis commandoregelgebruik.
Een PHPixie-project aanmaken
Aanbevolen pad voor websitebestanden
ServBay raadt aan om je lokale websiteprojecten te bewaren in de map /Applications/ServBay/www voor eenvoudig beheer en juiste toegangscontrole door ServBay.
- Controleer of Composer geïnstalleerd is: ServBay wordt standaard geleverd met Composer, je hoeft dus niets extra te installeren. Open je Terminal en voer
composer --versionuit om te controleren. - Maak een projectmap aan: Maak een nieuwe map in de aanbevolen root-directory voor je PHPixie-project en ga deze binnen:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app1
2
3 - Project aanmaken met Composer: Voer het volgende Composer-commando uit om het PHPixie-projecttemplate op te halen:bashComposer downloadt PHPixie en de benodigde pakketten naar deze directory.
composer create-project phpixie/project .1
Webserver configureren
Gebruik de Websites-functie van ServBay om de Caddy-webserver zo in te stellen dat deze je PHPixie-project correct serveert.
Open de ServBay applicatie.
Ga naar de Websites-lijst.
Klik om een nieuwe website toe te voegen.
Vul de website-instellingen in:
- Naam: Bijvoorbeeld
Mijn eerste PHPixie Dev Site(interne ServBay-identificatie). - Domeinnaam: Bijvoorbeeld
servbay-phpixie-test.local(het lokale domein om in je browser te benaderen). - Websitetype: Selecteer
PHP. - PHP-versie: Bijvoorbeeld
8.3. - Webroot (Document Root): Wijst naar de
webfolder:/Applications/ServBay/www/servbay-phpixie-app/web.
Waarom de
/webmap?Het startbestand van een PHPixie-project is
web/index.php. Voor veiligheid en best practices wijs je de webroot direct naar deze map, zodat gevoelige bestanden (zoals configuratie, de vendor-map, etc.) niet publiek toegankelijk zijn.- Naam: Bijvoorbeeld
Sla de configuratie op. ServBay configureert Caddy en werkt je lokale hosts file bij (indien nodig) zodat
servbay-phpixie-test.localnaar je ServBay-server verwijst.
Zie voor gedetailleerde uitleg Eerste website toevoegen.
Voorbeeldcode toevoegen
Om te testen en database/caching-integratie te demonstreren voegen we voorbeeldcode toe aan het project.
Maak een voorbeeldcontroller: Voeg onderstaande code toe aan
src/App/HTTP/Controller/Home.php. Maak de map en het bestand aan indien ze 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 actie voor homepage public function action_index(Request $request) { // Rendert het assets/templates/app/home.php-template return $this->template->render('app:home'); } // Memcached demo-actie public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // Gegevens opslaan, 60 seconden geldig $value = $cache->get('key'); // Gegevens ophalen return $this->response()->string($value); // String-respons teruggeven } // Redis demo-actie public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // Gegevens opslaan $value = $redis->get('key'); // Gegevens ophalen return $this->response()->string($value); // String-respons teruggeven } // MySQL/PostgreSQL actie om gebruiker toe te voegen public function action_add_user(Request $request) { // Querybuilder via databasecomponent ophalen $query = $this->components->database()->query(); // Nieuwe gebruiker aan 'users'-tabel toevoegen $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // Uniek e-mailadres ])->execute(); // Uitvoeren van de insert return $this->response()->string('Gebruiker succesvol toegevoegd.'); // Succesboodschap teruggeven } // MySQL/PostgreSQL actie om gebruikerslijst op te halen public function action_list_users(Request $request) { // Querybuilder via databasecomponent ophalen $query = $this->components->database()->query(); // Alle gebruikers uit 'users'-tabel ophalen $users = $query->select('*')->from('users')->execute()->fetchAll(); // Query uitvoeren en alle resultaten ophalen return $this->response()->json($users); // Gebruikerslijst als JSON teruggeven } }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
67Maak een voorbeeldtemplate: Voeg onderstaande code toe aan
assets/templates/app/home.php. Maak de map en het bestand aan indien ze 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>Deze pagina wordt dynamisch gegenereerd door jouw PHPixie-applicatie die op ServBay draait.</p> <h2>Links naar voorbeeldfunctionaliteit:</h2> <ul> <li><a href="/home/memcached">Memcached testen</a></li> <li><a href="/home/redis">Redis testen</a></li> <li><a href="/home/add_user">Gebruiker toevoegen aan database</a></li> <li><a href="/home/list_users">Gebruikers in database weergeven</a></li> </ul> <p>Vergeet niet om de benodigde database- en cacheconfiguratie uit te voeren.</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
Je website bezoeken
Na het voltooien van de ServBay websiteconfiguratie en toevoegen van de voorbeeldcode kun je je domein in de browser openen:
- Open je browser en ga naar
https://servbay-phpixie-test.local. - Je zou nu een pagina moeten zien met "Welcome to PHPixie on ServBay" en de links naar de demo-functies.
Indien niet bereikbaar, controleer:
- Of ServBay draait.
- Of de websiteconfiguratie in ServBay correct is: domein, websitetype, en webroot.
- Of je lokale hosts-file het domein goed resolveert (
servbay-phpixie-test.local). (ServBay regelt dit meestal automatisch.) - Of de juiste PHP-versie in ServBay is geactiveerd.
Voorbeeld van database- en cache-integratie
PHPixie ondersteunt standaard verschillende databases en cachesystemen. ServBay levert o.a. MySQL, PostgreSQL, Redis en Memcached, zodat je die eenvoudig aan je PHPixie-project kunt koppelen.
Belangrijk: Zorg ervoor dat de benodigde databaseservices (zoals MySQL of PostgreSQL) gestart zijn in ServBay en dat je een database hebt aangemaakt voor dit project. In dit voorbeeld wordt servbay_phpixie_app als database gebruikt. Je kunt hiervoor ServBay's databasebeheerprogramma's gebruiken (zoals Sequel Ace, Postico, TablePlus), of een command-line-client. De standaard databasegebruiker in ServBay is meestal root met wachtwoord password (controleer jouw ServBay-instellingen).
Databaseverbinding configureren
Afhankelijk van je database (MySQL of PostgreSQL), pas je het bestand assets/config/database.php aan. ServBay gebruikt doorgaans het adres 127.0.0.1.
MySQL configuratie voorbeeld (assets/config/database.php):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Pas de connection-string aan naar jouw database en ServBay instellingen
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Standaard ServBay gebruiker
'password' => 'password', // Standaard ServBay wachtwoord (pas aan indien nodig)
'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 configuratie voorbeeld (assets/config/database.php):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Pas de connection-string aan naar jouw database en ServBay instellingen
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Standaard ServBay gebruiker
'password' => 'password', // Standaard ServBay wachtwoord (pas aan indien nodig)
'options' => []
]
];1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Database tabellen aanmaken (migraties)
PHPixie biedt CLI-tools voor database-migraties (versiebeheer van database-structuur).
- Open de terminal: Ga naar de root-directory van je PHPixie-project:bash
cd /Applications/ServBay/www/servbay-phpixie-app1 - Migratiebestand aanmaken: Genereer een nieuw migratiebestand met de PHPixie CLI, bijvoorbeeld om de tabel
userste maken:bashEr wordt een PHP-bestand met een tijdstempel aangemaakt in de mapphp pixie generate:migration create_users_table1assets/migrations. - Bewerk het migratiebestand: Open het nieuwe bestand (bijv.
YYYY_MM_DD_HHMMSS_create_users_table.php) en definieer de structuur van deusers-tabel in deup()endown()-methoden:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Maak de tabel 'users' aan met schema builder $this->schema->create('users', function(Table $table) { $table->increments('id'); // Auto-increment sleutel $table->string('name'); // Naam $table->string('email')->unique(); // Uniek e-mailadres $table->timestamps(); // Timestamps voor created_at en updated_at }); } public function down() { // Verwijder de tabel 'users' $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 migraties uit: Voer het migratiecommando uit om de tabel
userste creëren:bashJe ziet in de terminal een succesvolle melding. Controleer eventueel met een database-tool of de tabel inderdaad is aangemaakt inphp pixie migrate1servbay_phpixie_app.
Werken met relationele databases (MySQL/PostgreSQL)
In de voorbeeldcontroller src/App/HTTP/Controller/Home.php zijn de methodes action_add_user en action_list_users toegevoegd voor interactie met MySQL of PostgreSQL.
- Gebruiker toevoegen: Ga naar
https://servbay-phpixie-test.local/home/add_userom een gebruiker aan deusers-tabel toe te voegen. - Gebruikers weergeven: Ga naar
https://servbay-phpixie-test.local/home/list_usersom alle gebruikers als JSON op te halen.
Configuratie en gebruik van NoSQL databases (Memcached/Redis)
ServBay heeft Memcached en Redis vooraf geïnstalleerd met de benodigde PHP-extensies. Je hoeft deze enkel in je PHPixie-project te configureren.
Memcached configuratie (assets/config/cache.php):
Bewerk of maak het bestand assets/config/cache.php aan en voeg het volgende toe:
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Standaard ServBay adres voor Memcached
'port' => 11211, // Standaard poort
'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 aan en voeg het volgende toe:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Standaard ServBay adres voor Redis
'port' => 6379, // Standaard poort
'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 de voorbeeldcontroller src/App/HTTP/Controller/Home.php zijn de methodes action_memcached en action_redis opgenomen ter demonstratie van caching via Memcached en Redis.
- Memcached testen: Ga naar
https://servbay-phpixie-test.local/home/memcachedom een key-value-paar te schrijven en uitlezen. - Redis testen: Ga naar
https://servbay-phpixie-test.local/home/redisom een key-value-paar te schrijven en uitlezen.
Controleer dat Memcached en Redis als pakket in ServBay zijn gestart.
Samenvatting
Je hebt met deze stappen een PHPixie-project opgezet, geconfigureerd en uitgevoerd in een ServBay local macOS-omgeving. Je weet nu hoe je met Composer het project aanmaakt, via ServBay's Websites een webserver instelt, database- en cache-integratie configureert, en hoe je deze functionaliteit test.
ServBay maakt de opzet van een PHP-ontwikkelomgeving extreem eenvoudig, zodat jij je volledig op de ontwikkeling kunt richten. Hopelijk kun je met deze handleiding vliegensvlug je volgende webproject starten met PHPixie!
