Erstellung und Ausführung eines FuelPHP-Projekts in der lokalen ServBay-Entwicklungsumgebung
Was ist FuelPHP?
FuelPHP ist ein flexibles und modular aufgebautes PHP-Framework zur Entwicklung moderner Webanwendungen. Es basiert auf dem Hierarchical Model-View-Controller (HMVC)-Designmuster und bietet eine Vielzahl leistungsfähiger Funktionen und Tools, mit denen Entwickler hochwertige Webanwendungen schnell und effizient realisieren können. Wegen seiner enormen Flexibilität, hohen Performance und einfachen Erweiterbarkeit ist FuelPHP die bevorzugte Wahl vieler PHP-Entwickler.
Die wichtigsten Funktionen und Vorteile von FuelPHP
- HMVC-Architektur: Unterstützt das hierarchische MVC-Entwurfsmuster. Dies fördert eine bessere Strukturierung, Wiederverwendbarkeit und modulare Entwicklung des Codes und eignet sich besonders für große oder komplexe Projekte.
- Höchstleistung: FuelPHP ist von Grund auf auf Performance ausgelegt und für Geschwindigkeit sowie effiziente Ressourcennutzung bekannt. Damit werden auch hohe Anfragevolumen problemlos verarbeitet.
- Einfache Erweiterbarkeit: Das Framework verfügt über einen leistungsfähigen Mechanismus zur Erweiterung. Entwickler können problemlos externe Bibliotheken einbinden oder maßgeschneiderte Funktionen ergänzen – ideal für individuelle Projektanforderungen.
- Sicherheit: Der Core enthält zahlreiche Sicherheitsfeatures wie automatische Eingabevalidierung, Output-Filter gegen XSS, Schutz vor CSRF-Angriffen und vorbeugende Maßnahmen gegen SQL-Injektionen – für deutlich robustere Anwendungen.
- Aktive Community: FuelPHP wird von einer engagierten Entwickler-Gemeinschaft unterstützt, die schnellen Support und eine Vielzahl von Drittanbieter-Ressourcen bietet.
Dank all dieser Merkmale erlaubt FuelPHP die schnelle Entwicklung leistungsfähiger, sicherer und wartungsfreundlicher Webanwendungen – ideal für Projekte jeder Größenordnung, vom kleinen Website-Projekt bis zur großen Enterprise-Anwendung.
FuelPHP-Entwicklungsumgebung mit ServBay einrichten
ServBay ist eine lokale Webentwicklungsumgebung, die speziell für Entwickler konzipiert wurde. Sie bringt alles mit, was man braucht: PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis und mehr. Mit ServBay können Sie die benötigte Umgebung für Ihr FuelPHP-Projekt ganz unkompliziert und ohne mühsame Einzelkonfiguration einrichten.
Diese Anleitung zeigt Ihnen Schritt für Schritt, wie Sie mithilfe der ServBay-Website-Funktion den PHP-Stack, den Webserver (Caddy), die Datenbank sowie Caching-Dienste konfigurieren und ein FuelPHP-Projekt lauffähig machen – inklusive schnellen Zugriff und Test.
Voraussetzungen
Bevor Sie starten, prüfen Sie bitte folgende Punkte:
- ServBay ist auf Ihrem macOS-System installiert und läuft einwandfrei.
- Die PHP-Umgebung in ServBay ist aktiviert (Standard bei ServBay).
- Die von Ihnen gewünschten Datenbankdienste (z. B. MySQL) und Cache-Dienste (z. B. Redis, Memcached) sind in ServBay gestartet und laufen.
- Composer wird bereits von ServBay bereitgestellt – kein separater Installationsschritt nötig.
FuelPHP-Projekt erstellen
Empfohlener Speicherort für Projekte
ServBay empfiehlt, Webprojekte zentral im Verzeichnis /Applications/ServBay/www
zu verwalten. Dies erleichtert das Management und die Konfiguration. Diese Anleitung verwendet dieses Verzeichnis als Beispiel.
Wechsel ins Website-Root-Verzeichnis
Öffnen Sie das Terminal und wechseln Sie ins von ServBay empfohlene Hauptverzeichnis:
bashcd /Applications/ServBay/www
1Projektordner anlegen
Erstellen Sie einen neuen Ordner für das FuelPHP-Projekt und wechseln hinein:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app
1
2Mit Composer FuelPHP-Projekt anlegen
Im Projektverzeichnis können Sie über Composer das FuelPHP-Framework herunterladen und initialisieren. Der Punkt
.
steht für das aktuelle Verzeichnis:bashcomposer create-project fuel/fuel .
1Composer lädt automatisch FuelPHP samt aller benötigten Abhängigkeiten in den Ordner
servbay-fuelphp-app
.
Webserver konfigurieren (ServBay Website-Funktion)
Damit Sie Ihr FuelPHP-Projekt über den Browser aufrufen können, müssen Sie mithilfe der ServBay-Website-Funktion eine virtuelle Host-Konfiguration vornehmen.
- Öffnen Sie die ServBay-Hauptoberfläche.
- Wählen Sie im Sidebar-Menü Website.
- Klicken Sie oben rechts auf die Schaltfläche Website hinzufügen.
- Tragen Sie in das Konfigurationsfenster folgende Informationen ein:
- Name: Einen gut erkennbaren Namen, z. B.
My First FuelPHP Dev Site
. - Domain: Eine lokale Domain für die Entwicklung, z. B.
servbay-fuelphp-test.local
. ServBay verknüpft diese automatisch mit localhost. - Website-Typ: Wählen Sie
PHP
. - PHP-Version: Geben Sie z. B.
8.3
an, je nach Bedarf. - Root-Verzeichnis: Bestimmen Sie das Einstiegverzeichnis. Der öffentliche Einstiegspunkt von FuelPHP ist die Datei
public/index.php
. Das Root-Verzeichnis muss daher auf daspublic
-Unterverzeichnis zeigen:/Applications/ServBay/www/servbay-fuelphp-app/public
.
- Name: Einen gut erkennbaren Namen, z. B.
- Durch Klick auf Hinzufügen speichern Sie die Einstellungen.
ServBay aktualisiert anschließend automatisch die Caddy-Konfiguration und lädt die Services neu, sodass die neue Domain aktiv wird.
Ausführliche Informationen zur Website-Erstellung finden Sie in der ServBay-Dokumentation: Erste Website hinzufügen.
Services im FuelPHP-Projekt konfigurieren
Im FuelPHP-Projekt müssen Sie in der Regel die Zugangsdaten für Datenbank, Caching und andere Services hinterlegen.
Datenbank-Konfiguration
Die Einstellungen für die Datenbank finden sich in fuel/app/config/development/db.php
. Editieren Sie diese Datei und tragen Sie die Daten für Ihre Datenbank ein. Beispielhaft für die MySQL-Standardkonfiguration von ServBay:
php
<?php
/**
* Die Datenbank-Konfiguration für die Entwicklung – wird mit den globalen Einstellungen zusammengeführt.
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // Stellen Sie sicher, dass die Datenbank fuel_dev existiert
'username' => 'root', // Standard-MySQL-Benutzer in ServBay
'password' => 'root', // Standard-MySQL-Passwort in ServBay (nur für lokale Entwicklung!)
],
'identifier' => '`', // MySQL verwendet Backticks als Identifizierer
],
];
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
Hinweis:
- Die Datenbank
fuel_dev
muss manuell in ServBay mittels eines Tools wie phpMyAdmin oder Adminer angelegt werden. Der Standarduserroot
und Passwortroot
sollten nur in der lokalen Entwicklungsumgebung verwendet werden. 'identifier' => '
'` ist für MySQL notwendig, damit Tabellen- und Feldnamen korrekt referenziert werden.
Cache-Konfiguration (Memcached und Redis)
FuelPHP unterstützt verschiedene Cache-Treiber. Die Einstellungen finden Sie in fuel/app/config/cache.php
. Stellen Sie sicher, dass die entsprechenden Dienste (Memcached/Redis) in ServBay laufen.
Memcached-Konfiguration (fuel/app/config/cache.php
):
Wenn Sie Memcached als Default verwenden möchten:
php
<?php
return [
'driver' => 'memcached', // Default-Treiber auf memcached setzen
'memcached' => [
'cache_id' => 'fuel', // Cache-ID
'servers' => [
'default' => [
'host' => '127.0.0.1', // Standard-Adresse für Memcached
'port' => 11211, // Standard-Port für Memcached
'weight' => 100,
],
],
'compression' => false, // Kompression aktivieren oder deaktivieren
],
// ... weitere Cache-Optionen
];
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
Die von ServBay bereitgestellte PHP-Version enthält für gewöhnlich die Memcached-Extension vorinstalliert.
Redis-Konfiguration (fuel/app/config/redis.php
):
Für Redis müssen Sie die Verbindung separat in der Datei redis.php
definieren:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Standard-Adresse für Redis
'port' => 6379, // Standard-Port für Redis
'database' => 0, // Redis-Datenbank-Index
],
// Sie können weitere Redis-Verbindungen einrichten
];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Auch Redis ist in der PHP-Umgebung von ServBay normalerweise vorinstalliert.
Beispiele für Datenbank- und Cache-Services
Um zu demonstrieren, wie FuelPHP mit Datenbanken und Cache-Diensten arbeitet, fügen wir einige Beispiel-Codes ein.
Datenbank-Tabelle anlegen (Mit FuelPHP Migrations)
FuelPHP bietet das Oil-Tool für die Verwaltung von Datenbankmigrationen – eine Methode zur Versionskontrolle der DB-Struktur.
Migration-File erstellen
Im Projektverzeichnis (
servbay-fuelphp-app
) erstellen Sie mit dem Oil-Tool eine Migration zum Anlegen derusers
-Tabelle:bashphp oil generate migration create_users_table
1Im Ordner
fuel/app/migrations
wird eine neue Datei mit Zeitstempel erzeugt.Migration bearbeiten
Öffnen Sie die neue Migration (
fuel/app/migrations/xxxxxxxxxxxx_create_users_table.php
) und passen Sie die Methodenup()
unddown()
wie folgt an:php<?php namespace Fuel\Migrations; use Fuel\Core\DBUtil; class Create_users_table { public function up() { // Erstellt die Tabelle users 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'); // Primärschlüssel, Index, Engine und Zeichensatz festlegen } public function down() { // Löscht die Tabelle users (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
23Migration ausführen
Im Ordner
servbay-fuelphp-app
führen Sie nun die Migration aus:bashphp oil refine migrate
1Im Erfolgsfall wird die Tabelle
users
in der Datenbankfuel_dev
angelegt.
Beispielcontroller-Code hinzufügen
Bearbeiten Sie die Datei fuel/app/classes/controller/welcome.php
, um verschiedene Aktionen für DB- und Cache-Operationen bereitzustellen:
php
<?php
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
use Fuel\Core\DB; // DB-Facade einbinden
use Fuel\Core\Redis; // Redis-Facade einbinden
class Controller_Welcome extends Controller
{
// Standard-Homepage-Action
public function action_index()
{
return Response::forge('Hello ServBay!');
}
// Memcached-Beispiel-Action
public function action_memcached()
{
// Versuch, Daten aus dem Cache zu holen
$value = Cache::get('servbay_memcached_key');
if ($value === false) {
// Wenn nicht vorhanden, Daten setzen
$value = 'Hello Memcached from ServBay!';
Cache::set('servbay_memcached_key', $value, 60); // 60 Sekunden speichern
$value .= ' (from cache)';
} else {
$value .= ' (cached)';
}
return Response::forge($value);
}
// Redis-Beispiel-Action
public function action_redis()
{
// Redis-Instanz holen (Default-Verbindung)
$redis = \Redis_Db::instance(); // In FuelPHP 1.x: Redis_Db::instance()
// Für mehrere Verbindungen: \Redis_Db::instance('connection_name')
// Daten zu Redis schreiben
$redis->set('servbay_redis_key', 'Hello Redis from ServBay!');
// Daten aus Redis lesen
$value = $redis->get('servbay_redis_key');
return Response::forge($value);
}
// MySQL-Schreib-Beispiel-Action
public function action_mysql_add()
{
try {
// Einen Datensatz in die Tabelle users einfügen
$result = DB::insert('users')->set([
'name' => 'ServBay Demo User ' . time(), // Timestamp für eindeutigen Namen
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute(); // execute() gibt ein Array mit neuer ID zurück
return Response::forge('User added with ID: ' . $result[0]);
} catch (\Database_Exception $e) {
// Fehlerbehandlung, z.B. bei doppeltem Email
return Response::forge('Error adding user: ' . $e->getMessage(), 500);
}
}
// MySQL-Lese-Beispiel-Action
public function action_mysql()
{
// Alle Datensätze aus users abfragen
$users = DB::select('id', 'name', 'email')->from('users')->execute()->as_array();
// Liste als JSON zurückgeben
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
Hinweis:
- Die Facades
DB
undRedis
werden direkt mituse Fuel\Core\DB;
unduse Fuel\Core\Redis;
eingebunden. - Die Schlüssel für Memcached und Redis beginnen mit
servbay_
, um Namenskonflikte zu vermeiden. - Das MySQL-Beispiel für Inserts verwendet einen Zeitstempel im Username und einfache Fehlerbehandlung sowie realistische Texte.
- In FuelPHP 1.x wird
\Redis_Db::instance()
zum Instanzieren verwendet.
Routing konfigurieren
Damit Sie die neuen Aktionen bequem über URLs ansprechen können, passen Sie die Route-Konfiguration in fuel/app/config/routes.php
an. Die Standardroute für Controller_Welcome
ist bereits definiert, für die neuen Actions fügen Sie folgende Einträge hinzu:
php
<?php
return array(
'_root_' => 'welcome/index', // Die Standardroute für den Index
'_404_' => 'welcome/404', // Route für Fehler 404
// Routen für die neuen Beispiel-Actions
'memcached' => 'welcome/memcached',
'redis' => 'welcome/redis',
'mysql_add' => 'welcome/mysql_add',
'mysql' => 'welcome/mysql',
// ... weitere Routen
);
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 aufrufen und testen
Sie können Ihr FuelPHP-Projekt und die angebundenen Services nun im Browser über die zuvor eingerichtete Domain testen: https://servbay-fuelphp-test.local
- Startseite anzeigen:
https://servbay-fuelphp-test.local
- Erwartete Ausgabe:
Hello ServBay!
- Erwartete Ausgabe:
- Memcached testen:
https://servbay-fuelphp-test.local/memcached
- Beim ersten Aufruf:
Hello Memcached from ServBay! (from cache)
(Cache funktionsfähig) - Bei wiederholtem Aufruf:
Hello Memcached from ServBay! (cached)
(Cache funktionsfähig und nicht abgelaufen)
- Beim ersten Aufruf:
- Redis testen:
https://servbay-fuelphp-test.local/redis
- Erwartete Ausgabe:
Hello Redis from ServBay!
(Redis funktionsfähig)
- Erwartete Ausgabe:
- Benutzer zu MySQL hinzufügen:
https://servbay-fuelphp-test.local/mysql_add
- Erwartete Ausgabe:
User added with ID: [neue ID]
(MySQL und Tabelle korrekt eingerichtet)
- Erwartete Ausgabe:
- MySQL-Benutzerliste abrufen:
https://servbay-fuelphp-test.local/mysql
- Erwartete Ausgabe: Ein JSON-Array mit allen Einträgen aus der Tabelle
users
(Datenbank und Tabelle vorhanden)
- Erwartete Ausgabe: Ein JSON-Array mit allen Einträgen aus der Tabelle
Hinweis zu HTTPS: ServBay richtet automatisch SSL-Zertifikate für Ihre lokalen Websites ein und verwendet dazu das ServBay User CA oder ServBay Public CA. Falls Ihr Browser ein Zertifikatswarnung zeigt, denken Sie daran, das CA-Zertifikat von ServBay auf Ihrem System zu vertrauen.
Hinweise und Tipps
- Achten Sie im ServBay-Hauptfenster darauf, dass alle relevanten Services – PHP, Caddy (oder Nginx/Apache), MySQL, Redis, Memcached – laufen.
- Die Datenbank
fuel_dev
muss manuell über ein Verwaltungs-Tool (z. B. phpMyAdmin) erstellt werden, bevor Sie sie im Projekt verwenden. Das Migration-Tooloil refine migrate
legt Tabellen an, erzeugt aber keine Datenbank automatisch. - Die öffentliche Einstiegspunkt-Datei für FuelPHP ist
public/index.php
. Im ServBay-Website-Setup muss das Root-Verzeichnis daher auf denpublic
-Ordner Ihres Projekts zeigen.
Fazit
Mit ServBay können Sie unter macOS extrem schnell ein komplettes FuelPHP-Entwicklungs-Setup einrichten. Diese Anleitung zeigt Ihnen, wie Sie ein Projekt anlegen, über die Website-Funktion von ServBay konfigurieren, Datenbank- und Cache-Services anbinden und alle Funktionalität mittels Codebeispielen prüfen. Die vorinstallierten Services und der komfortable Workflow von ServBay steigern Ihre Entwicklungsgeschwindigkeit enorm.
Wir hoffen, dass dieser Leitfaden Ihnen einen optimalen Einstieg in die FuelPHP-Entwicklung mit ServBay ermöglicht!