Een FuelPHP-project aanmaken en uitvoeren in de ServBay lokale ontwikkelomgeving
Wat is FuelPHP?
FuelPHP is een flexibel en modulair PHP-framework, speciaal ontworpen voor het bouwen van moderne webapplicaties. Het volgt het HMVC (Hierarchical Model-View-Controller) ontwerpprincipe en biedt een rijk scala aan functies en tools, waarmee ontwikkelaars snel en efficiënt hoogwaardige webapplicaties kunnen bouwen. Door de uitstekende flexibiliteit, hoge prestaties en het gemak van uitbreiden is FuelPHP de voorkeurskeuze van veel PHP-ontwikkelaars.
Belangrijkste kenmerken en voordelen van FuelPHP
- HMVC-architectuur: Ondersteunt de hiërarchische MVC-ontwerpmethode, wat zorgt voor betere organisatie, hergebruik en modulaire ontwikkeling van code, ideaal voor grotere of complexe projecten.
- Hoge prestaties: FuelPHP is geoptimaliseerd voor snelheid en efficiënt gebruik van resources en staat bekend om het effectief verwerken van hoge aantallen verzoeken.
- Makkelijk uit te breiden: Het framework biedt een krachtig extensiesysteem waarmee ontwikkelaars eenvoudig externe libraries kunnen integreren of eigen functionaliteit kunnen toevoegen, afgestemd op hun specifieke projectbehoeften.
- Veiligheid: Bevat diverse ingebouwde beveiligingsfeatures, waaronder automatische input-validatie, output-filtering (ter bescherming tegen XSS), CSRF-bescherming en SQL-injectiepreventie – alles om veiligere applicaties te bouwen.
- Sterke communityondersteuning: Er is een actieve ontwikkelaarscommunity, waarmee je snel hulp en veel externe middelen kunt vinden.
Dankzij deze eigenschappen stelt FuelPHP ontwikkelaars in staat om snel veilige, goed presterende en onderhoudsvriendelijke webapplicaties te bouwen, van kleine projecten tot grote enterprise-oplossingen.
Een FuelPHP-ontwikkelomgeving opzetten met ServBay
ServBay is een lokale webontwikkelomgeving ontwikkeld voor developers, en wordt geleverd met alles wat nodig is: PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis en meer. Met ServBay kun je moeiteloos de benodigde omgeving voor je FuelPHP-project creëren, zonder dat je allerlei afhankelijkheden handmatig hoeft te installeren of configureren.
In deze gids lees je hoe je met ServBay en de bijbehorende PHP-omgeving, webserver (Caddy) en database- en cachingservices snel een FuelPHP-project opzet en laat draaien. We maken gebruik van de website-functionaliteit van ServBay om de webserver te configureren, zodat je je project eenvoudig kunt benaderen en testen.
Vereisten
Controleer vóór je begint of je aan de volgende eisen voldoet:
- ServBay is succesvol geïnstalleerd en draait op je macOS-systeem.
- De PHP-omgeving in ServBay is ingeschakeld (standaard actief).
- De database (zoals MySQL) en cachingservices (zoals Redis of Memcached) die je wilt gebruiken, zijn gestart in ServBay en werken correct.
- Composer wordt standaard met ServBay meegeleverd; aparte installatie is niet nodig.
Een FuelPHP-project aanmaken
Aanbevolen projectopslagpad
ServBay raadt aan om alle webprojecten centraal te plaatsen in de map /Applications/ServBay/www
. Dit maakt het beheer en de configuratie eenvoudiger. Deze gids gebruikt deze map als voorbeeld.
Ga naar de hoofdmap voor websites
Open Terminal en ga naar het aanbevolen webroot-pad:
bashcd /Applications/ServBay/www
1Maak een projectmap
Maak een nieuwe map voor je FuelPHP-project aan en ga vervolgens die map in:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app
1
2Maak een FuelPHP-project met Composer
Download en initialiseer het FuelPHP-framework in je map.
.
geeft aan dat het project in de huidige map wordt aangemaakt:bashcomposer create-project fuel/fuel .
1Composer downloadt automatisch het FuelPHP-framework en alle afhankelijkheden in de folder
servbay-fuelphp-app
.
Webserver configureren (met ServBay Website-functionaliteit)
Om je FuelPHP-project via de browser te benaderen, moet je een virtuele host aanmaken via de website-functionaliteit van ServBay.
- Open het hoofdscherm van ServBay.
- Klik in de zijbalk op Website.
- Klik rechtsboven op Website toevoegen.
- Vul in het pop-upvenster de volgende informatie in:
- Naam: Geef je site een herkenbare naam, bijvoorbeeld
My First FuelPHP Dev Site
. - Domein: Stel een lokale domeinnaam in, bijvoorbeeld
servbay-fuelphp-test.local
. ServBay koppelt dit automatisch aan je lokale machine. - Websitetype: Kies
PHP
. - PHP-versie: Selecteer de gewenste PHP-versie, bijvoorbeeld
8.3
. - Webroot: Geef de hoofddirectory aan van je FuelPHP-project. Het publieke entry point van FuelPHP is
public/index.php
, dus stel je webroot in op de submappublic
van je project:/Applications/ServBay/www/servbay-fuelphp-app/public
.
- Naam: Geef je site een herkenbare naam, bijvoorbeeld
- Klik op Toevoegen om de configuratie op te slaan.
ServBay werkt nu automatisch de Caddy-configuratie bij en herlaadt de diensten, zodat de nieuwe domeinnaam werkt.
Zie voor een gedetailleerde uitleg Eerste website toevoegen in de ServBay-documentatie.
Algemene service-instellingen van je FuelPHP project
Voor een FuelPHP-project moet je meestal database- en cache-verbindingen configureren.
Database-instellingen
De databaseconfiguratie van FuelPHP vind je in het bestand fuel/app/config/development/db.php
. Open dit bestand en pas je database-gegevens aan. Stel dat je de standaard MySQL van ServBay gebruikt:
php
<?php
/**
* De ontwikkelingsdatabase-instellingen. Worden samengevoegd met de algemene settings.
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // Zorg dat de database fuel_dev bestaat
'username' => 'root', // Standaardgebruikersnaam MySQL in ServBay
'password' => 'root', // Standaardwachtwoord (alleen voor lokaal gebruik!)
],
'identifier' => '`', // MySQL vereist backticks als identifier
],
];
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
Let op:
- Maak vooraf handmatig een database aan genaamd
fuel_dev
in ServBay via bijvoorbeeld phpMyAdmin of Adminer. De standaard MySQL-gebruiker en het wachtwoord zijn beidenroot
. Gebruik deze alleen in je lokale ontwikkelomgeving. 'identifier' => '
'` is vereist voor MySQL voor correcte referenties van tabel- en veldnamen.
Cache-instellingen (Memcached en Redis)
FuelPHP ondersteunt verschillende cache-drivers. Stel de gewenste driver en connectiegegevens in via fuel/app/config/cache.php
. Zorg dat Memcached- en/of Redis-services in ServBay actief zijn.
Memcached-instellingen (fuel/app/config/cache.php
):
Gebruik je Memcached als standaardcache:
php
<?php
return [
'driver' => 'memcached', // Zet standaard driver op memcached
'memcached' => [
'cache_id' => 'fuel', // Cache ID
'servers' => [
'default' => [
'host' => '127.0.0.1', // Standaardadres Memcached
'port' => 11211, // Standaardpoort Memcached
'weight' => 100,
],
],
'compression' => false, // Zet eventueel compressie aan/uit
],
// ... Overige driver-instellingen
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
De door ServBay meegeleverde PHP-versies bevatten meestal al de Memcached-extensie.
Redis-instellingen (fuel/app/config/redis.php
):
Als je Redis gebruikt, voeg dan een redis.php
-bestand toe met de connectie-informatie:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Standaardadres Redis
'port' => 6379, // Standaardpoort Redis
'database' => 0, // Redis database-index
],
// Je kunt meerdere Redis-connecties configureren
];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Ook de Redis-extensie is meestal al aanwezig in de PHP-versies van ServBay.
Voorbeelden van database- en cache-gebruik
Ter illustratie voegen we voorbeeldcode toe om het gebruik van database en cache te laten zien.
Een databasetabel aanmaken (met FuelPHP Migrations)
FuelPHP biedt de Oil-tool voor database-migraties: versiebeheer voor je databasemodel.
Maak een migratiebestand
Gebruik Oil in de hoofdmap van je project (
servbay-fuelphp-app
) om een migratie voor de tabelusers
aan te maken:bashphp oil generate migration create_users_table
1Er verschijnt een nieuw bestand in
fuel/app/migrations
met een tijdsstempel.Bewerk het migratiebestand
Open het nieuwe bestand (
fuel/app/migrations/xxxxxxxxxxxx_create_users_table.php
). Pas deup()
-methode aan om de tabel aan te maken en definieer een rollback indown()
:php<?php namespace Fuel\Migrations; use Fuel\Core\DBUtil; class Create_users_table { public function up() { // Maak de tabel users aan DBUtil::create_table('users', [ 'id' => ['type' => 'int', 'constraint' => 11, 'auto_increment' => true], 'name' => ['type' => 'varchar', 'constraint' => 100], 'email' => ['type' => 'varchar', 'constraint' => 100, 'unique' => true], ], ['id'], true, 'InnoDB', 'utf8mb4_unicode_ci'); // Primaire sleutel, indexen, engine en charset instellen } public function down() { // Tabel users verwijderen (rollback) DBUtil::drop_table('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Voer de migratie uit
Gebruik Oil in de hoofdmap om de migratie uit te voeren en de tabel aan te maken:
bashphp oil refine migrate
1Als alles goed is gegaan verschijnt de tabel
users
in de databasefuel_dev
.
Voorbeeldcontroller toevoegen
Voeg in fuel/app/classes/controller/welcome.php
methodes toe die het gebruik van database en cache demonstreren:
php
<?php
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
use Fuel\Core\DB; // DB-facade importeren
use Fuel\Core\Redis; // Redis-facade importeren
class Controller_Welcome extends Controller
{
// Standaard home action
public function action_index()
{
return Response::forge('Hello ServBay!');
}
// Memcached demo action
public function action_memcached()
{
// Probeer data uit de cache op te halen
$value = Cache::get('servbay_memcached_key');
if ($value === false) {
// Als de cache leeg is, sla dan data op
$value = 'Hello Memcached from ServBay!';
Cache::set('servbay_memcached_key', $value, 60); // 60 seconden cachen
$value .= ' (from cache)';
} else {
$value .= ' (cached)';
}
return Response::forge($value);
}
// Redis demo action
public function action_redis()
{
// Haal het Redis instance op (standaard connectie)
$redis = \Redis_Db::instance(); // FuelPHP 1.x gebruikt Redis_Db::instance()
// Of bij meerdere connecties: \Redis_Db::instance('connection_name')
// Data opslaan in Redis
$redis->set('servbay_redis_key', 'Hello Redis from ServBay!');
// Data ophalen uit Redis
$value = $redis->get('servbay_redis_key');
return Response::forge($value);
}
// MySQL add (schrijf) voorbeeld
public function action_mysql_add()
{
try {
// Voeg een nieuwe gebruiker toe
$result = DB::insert('users')->set([
'name' => 'ServBay Demo User ' . time(), // Unieke naam via timestamp
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute(); // execute() retourneert array met nieuw ID
return Response::forge('User added with ID: ' . $result[0]);
} catch (\Database_Exception $e) {
// Databasefouten afvangen, bijvoorbeeld dubbele email
return Response::forge('Error adding user: ' . $e->getMessage(), 500);
}
}
// MySQL leesvoorbeeld
public function action_mysql()
{
// Haal alle records op uit users
$users = DB::select('id', 'name', 'email')->from('users')->execute()->as_array();
// Geef de gebruikerslijst als JSON terug
return Response::forge(json_encode($users, JSON_PRETTY_PRINT));
}
}
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
67
68
69
70
71
72
73
74
75
76
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
67
68
69
70
71
72
73
74
75
76
Let op:
- Hier worden de facades
DB
enRedis
toegepast voor direct gebruik. - De cachenaam voor Memcached en Redis begint met
servbay_
om conflicten te voorkomen. - De MySQL-voorbeeldcode gebruikt een tijdstempel voor unieke waardes en behandelt fouten netjes.
- In FuelPHP 1.x wordt
\Redis_Db::instance()
gebruikt om een Redis-instantie op te halen.
Routes instellen
Stel de routes in zodat de controller actions te benaderen zijn via een URL. Open fuel/app/config/routes.php
en pas het array aan:
php
<?php
return array(
'_root_' => 'welcome/index', // Standaard route naar welcome/index
'_404_' => 'welcome/404', // 404 errorpagina
// Routes voor de nieuwe demo-actions
'memcached' => 'welcome/memcached',
'redis' => 'welcome/redis',
'mysql_add' => 'welcome/mysql_add',
'mysql' => 'welcome/mysql',
// ... overige route-instellingen
);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
Website bezoeken en testen
Nu kun je de site testen via het domein dat je in ServBay hebt aangemaakt, bijvoorbeeld https://servbay-fuelphp-test.local
.
- Homepage bekijken:
https://servbay-fuelphp-test.local
- Verwachte output:
Hello ServBay!
- Verwachte output:
- Memcached testen:
https://servbay-fuelphp-test.local/memcached
- Eerste bezoek:
Hello Memcached from ServBay! (from cache)
(indien cache werkt) - Volgende bezoek:
Hello Memcached from ServBay! (cached)
(indien cache nog actief is)
- Eerste bezoek:
- Redis testen:
https://servbay-fuelphp-test.local/redis
- Verwachte output:
Hello Redis from ServBay!
(als Redis draait)
- Verwachte output:
- Gebruiker toevoegen in MySQL:
https://servbay-fuelphp-test.local/mysql_add
- Verwachte output:
User added with ID: [nieuwe ID]
(mits database/tafel bestaat)
- Verwachte output:
- Gebruikerslijst ophalen uit MySQL:
https://servbay-fuelphp-test.local/mysql
- Verwachte output: Een JSON-array met alle records uit de tabel
users
(mits data aanwezig is)
- Verwachte output: Een JSON-array met alle records uit de tabel
Over HTTPS: ServBay genereert standaard een SSL-certificaat voor lokale websites en vertrouwt deze via een eigen CA. Geeft je browser aan dat het certificaat niet vertrouwd is, zorg dan dat je de ServBay CA-certificaten vertrouwt op je systeem.
Let op
- Zorg in het hoofdscherm van ServBay dat alle benodigde services actief zijn (PHP-versie, Caddy/Nginx/Apache, MySQL, Redis, Memcached, etc.).
- Maak de database
fuel_dev
handmatig aan via het databasebeheer in ServBay voordat je migreert (of wijs indb.php
een al bestaande database toe). De migratietool van FuelPHP maakt wél tabellen aan, maar geen databases. - Het publieke entry point van FuelPHP is
public/index.php
, dus zorg dat de webroot in ServBay naar depublic
-submap van je project verwijst.
Samenvatting
Met ServBay kun je snel en eenvoudig een volledige lokale ontwikkelomgeving op macOS creëren voor je FuelPHP-project. In dit artikel behandelden we het aanmaken van het project, het koppelen van de website-functie in ServBay, de benodigde database- en cache-instellingen, en controleerden we alles via uitgewerkte voorbeeldcode. Dankzij de voorgeconfigureerde services en het heldere beheer in ServBay kun je veel efficiënter ontwikkelen.
Hopelijk helpt deze gids je snel op weg met FuelPHP op ServBay!