Membuat dan Menjalankan Proyek FuelPHP di Lingkungan Pengembangan Lokal ServBay
Apa itu FuelPHP?
FuelPHP adalah framework PHP yang fleksibel dan modular, dirancang untuk membangun aplikasi web modern. Framework ini mengadopsi pola desain Hierarchical Model-View-Controller (HMVC), menawarkan banyak fitur dan alat yang memudahkan para developer untuk membangun aplikasi web berkualitas tinggi dengan cepat dan efisien. Dengan fleksibilitas tinggi, performa mumpuni, serta kemampuan untuk diperluas, FuelPHP menjadi pilihan utama bagi banyak pengembang PHP.
Fitur dan Keunggulan Utama FuelPHP
- Arsitektur HMVC: Mendukung pola desain MVC bertingkat, membantu organisasi kode, reusabilitas, dan pengembangan modular—cocok untuk proyek besar maupun kompleks.
- Performa Tinggi: FuelPHP dirancang dengan optimalisasi performa, terkenal efisien dalam kecepatan dan penggunaan sumber daya, serta mampu menangani request dengan jumlah besar.
- Mudah Diperluas: Framework ini menyediakan mekanisme ekstensi yang powerful, memungkinkan integrasi pustaka pihak ketiga atau penambahan fitur custom sesuai kebutuhan proyek.
- Keamanan: Tersedia berbagai fitur keamanan bawaan seperti validasi input otomatis, filtering output (mencegah XSS), perlindungan CSRF, dan pencegahan SQL Injection, guna mendukung aplikasi yang aman.
- Komunitas Aktif: Didukung komunitas developer yang ramai, sehingga Anda dapat memperoleh bantuan dan sumber daya pihak ketiga yang melimpah.
Berkat fitur-fitur di atas, FuelPHP membantu Anda membangun aplikasi web yang cepat, aman, dan mudah dirawat, baik untuk proyek skala kecil maupun enterprise.
Menyiapkan Lingkungan Pengembangan FuelPHP dengan ServBay
ServBay adalah lingkungan pengembangan web lokal untuk developer, telah menyediakan berbagai layanan yang sering dibutuhkan seperti PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis, dan lain-lain. Menggunakan ServBay sangat memudahkan Anda men-setup kebutuhan proyek FuelPHP tanpa harus install dan konfigurasi satu per satu secara manual.
Panduan ini akan membahas secara detail pemanfaatan lingkungan PHP bawaan ServBay, server web (Caddy), dan layanan database serta cache untuk membuat dan menjalankan proyek FuelPHP. Kita juga akan menggunakan fitur Website ServBay untuk konfigurasi server web dan melakukan akses proyek dengan mudah.
Prasyarat
Sebelum mulai, pastikan Anda telah memenuhi syarat berikut:
- ServBay sudah ter-install dan berjalan dengan baik di macOS.
- Lingkungan PHP pada ServBay sudah aktif (aktif secara default).
- Layanan database (misal MySQL) dan cache (misal Redis, Memcached) di ServBay sudah berjalan lancar.
- Composer sudah tersedia di ServBay (tidak perlu install lagi).
Membuat Proyek FuelPHP
Direkomendasikan Lokasi Proyek
ServBay menyarankan developer menempatkan semua proyek website di direktori /Applications/ServBay/www
untuk kemudahan manajemen dan konfigurasi. Panduan ini juga akan menggunakan direktori tersebut sebagai contoh.
Navigasi ke Direktori Root Website
Buka aplikasi Terminal, lalu pindah ke direktori root yang disarankan ServBay:
bashcd /Applications/ServBay/www
1Buat Direktori Proyek
Buat folder baru untuk proyek FuelPHP Anda, lalu masuk ke dalamnya:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app
1
2Buat Proyek FuelPHP dengan Composer
Di dalam folder proyek, gunakan Composer untuk mengunduh dan menginisialisasi framework FuelPHP. Tanda
.
artinya proyek akan dibuat di direktori saat ini:bashcomposer create-project fuel/fuel .
1Composer akan mengunduh FuelPHP beserta dependensinya ke folder
servbay-fuelphp-app
.
Konfigurasi Web Server (Melalui Fitur Website ServBay)
Agar proyek FuelPHP dapat diakses via browser, Anda perlu mengatur virtual host dengan fitur Website ServBay.
- Buka antarmuka utama ServBay.
- Klik menu Website di sidebar.
- Klik tombol Tambah Website di kanan atas.
- Pada jendela konfigurasi, isi data berikut:
- Nama: Isi dengan nama site yang mudah dikenali, misal
My First FuelPHP Dev Site
. - Domain: Atur domain lokal, misal
servbay-fuelphp-test.local
. ServBay akan mengarahkan domain ini ke lokal secara otomatis. - Tipe Website: Pilih
PHP
. - Versi PHP: Pilih versi PHP yang diinginkan, misal
8.3
. - Direktori Root Website: Masukkan path ke folder public FuelPHP:
/Applications/ServBay/www/servbay-fuelphp-app/public
(karena file entry point FuelPHP ada dipublic/index.php
).
- Nama: Isi dengan nama site yang mudah dikenali, misal
- Klik Tambah untuk menyimpan konfigurasi.
ServBay akan otomatis memperbarui konfigurasi Caddy dan me-reload layanan agar domain baru bisa digunakan.
Untuk langkah detail tentang penambahan website bisa lihat dokumentasi ServBay pada Menambahkan Website Pertama.
Konfigurasi Koneksi Layanan di Proyek FuelPHP
Proyek FuelPHP umumnya perlu mengatur info koneksi ke database, cache, dan layanan lain.
Konfigurasi Database
Konfigurasi database FuelPHP terletak di file fuel/app/config/development/db.php
. Silakan edit file tersebut dan isi info koneksi database. Contoh di bawah menggunakan MySQL default dari ServBay:
php
<?php
/**
* Pengaturan database untuk lingkungan development. Akan digabung dengan pengaturan global.
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // Pastikan database fuel_dev sudah dibuat
'username' => 'root', // Username default MySQL ServBay
'password' => 'root', // Password default MySQL ServBay (hanya untuk development lokal!)
],
'identifier' => '`', // Untuk MySQL gunakan backtick sebagai 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
Catatan:
- Anda perlu membuat database
fuel_dev
secara manual via tool admin database ServBay (misal phpMyAdmin atau Adminer). User MySQL default ServBay adalahroot
dengan passwordroot
, ini hanya untuk penggunaan di lingkungan lokal. 'identifier' => '
'` penting untuk MySQL agar nama tabel/kolom dikutip dengan benar.
Konfigurasi Cache (Memcached dan Redis)
FuelPHP mendukung banyak tipe cache driver. Konfigurasinya umumnya dilakukan di file fuel/app/config/cache.php
. Pastikan layanan Memcached dan/atau Redis di ServBay sudah aktif.
Konfigurasi Memcached (fuel/app/config/cache.php
):
Jika ingin menggunakan Memcached sebagai cache default:
php
<?php
return [
'driver' => 'memcached', // Set driver default ke memcached
'memcached' => [
'cache_id' => 'fuel', // ID Cache
'servers' => [
'default' => [
'host' => '127.0.0.1', // Alamat Memcached default
'port' => 11211, // Port default Memcached
'weight' => 100,
],
],
'compression' => false, // Aktifkan kompresi jika diperlukan
],
// ... Konfigurasi driver cache lain
];
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
PHP ServBay umumnya sudah include ekstensi Memcached.
Konfigurasi Redis (fuel/app/config/redis.php
):
Untuk menggunakan Redis, edit file redis.php
:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Alamat default Redis
'port' => 6379, // Port default Redis
'database' => 0, // Index database Redis
],
// Anda bisa menambah beberapa koneksi Redis
];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
PHP ServBay juga umumnya sudah include ekstensi Redis.
Contoh Layanan Database dan Cache
Untuk demonstrasi integrasi FuelPHP dengan database dan layanan cache, berikut contoh kode implementasi.
Menyiapkan Tabel Database (Menggunakan FuelPHP Migrations)
FuelPHP menyediakan tool Oil untuk mengelola migrasi—alat versiing skema database.
Buat File Migrasi
Dari folder root proyek (
servbay-fuelphp-app
), gunakan tool Oil untuk membuat file migrasi yang mendefinisikan tabelusers
:bashphp oil generate migration create_users_table
1File migrasi baru akan muncul di folder
fuel/app/migrations
dengan nama dan timestamp unik.Edit File Migrasi
Buka file migrasi (
fuel/app/migrations/xxxxxxxxxxxx_create_users_table.php
), lalu edit methodup()
untuk skema tabel dan methoddown()
untuk rollback:php<?php namespace Fuel\Migrations; use Fuel\Core\DBUtil; class Create_users_table { public function up() { // Membuat tabel 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'); // Set primary key, aktifkan index, set engine dan charset } public function down() { // Menghapus tabel 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
23Jalankan Migrasi
Dari root proyek (
servbay-fuelphp-app
), gunakan Oil untuk menjalankan migrasi:bashphp oil refine migrate
1Jika berhasil, tabel
users
akan dibuat di databasefuel_dev
.
Menambah Kode Contoh di Controller
Edit file fuel/app/classes/controller/welcome.php
, tambahkan method untuk demo database & cache:
php
<?php
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
use Fuel\Core\DB; // Impor DB facade
use Fuel\Core\Redis; // Impor Redis facade
class Controller_Welcome extends Controller
{
// Action halaman utama default
public function action_index()
{
return Response::forge('Hello ServBay!');
}
// Action contoh Memcached
public function action_memcached()
{
// Cek data dari cache
$value = Cache::get('servbay_memcached_key');
if ($value === false) {
// Set data ke cache jika belum ada
$value = 'Hello Memcached from ServBay!';
Cache::set('servbay_memcached_key', $value, 60); // Cache 60 detik
$value .= ' (from cache)';
} else {
$value .= ' (cached)';
}
return Response::forge($value);
}
// Action contoh Redis
public function action_redis()
{
// Ambil instance Redis (default)
$redis = \Redis_Db::instance(); // FuelPHP 1.x: Redis_Db::instance()
// Untuk beberapa koneksi: \Redis_Db::instance('connection_name')
// Set data ke Redis
$redis->set('servbay_redis_key', 'Hello Redis from ServBay!');
// Ambil data dari Redis
$value = $redis->get('servbay_redis_key');
return Response::forge($value);
}
// Action contoh Insert ke MySQL
public function action_mysql_add()
{
try {
// Insert user baru ke tabel users
$result = DB::insert('users')->set([
'name' => 'ServBay Demo User ' . time(), // Unik dengan timestamp
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute(); // execute() return array berisi ID record baru
return Response::forge('User added with ID: ' . $result[0]);
} catch (\Database_Exception $e) {
// Handle error database, misal email duplikat
return Response::forge('Error adding user: ' . $e->getMessage(), 500);
}
}
// Action contoh Select dari MySQL
public function action_mysql()
{
// Query semua user dari tabel users
$users = DB::select('id', 'name', 'email')->from('users')->execute()->as_array();
// Return data user dalam format JSON
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
Catatan:
- Impor facade
DB
danRedis
(use Fuel\Core\DB;
,use Fuel\Core\Redis;
) supaya bisa langsung dipakai. - Key cache pada Memcached/Redis menggunakan prefix
servbay_
agar aman dari konflik. - Pada contoh penulisan ke MySQL, data user unik dengan timestamp dan error handling sederhana.
- FuelPHP 1.x gunakan
\Redis_Db::instance()
untuk akses Redis.
Konfigurasi Routing
Agar method controller tersebut bisa diakses, perlu meng-update routing pada fuel/app/config/routes.php
. Biasanya FuelPHP sudah mengarahkan ke Controller_Welcome
secara default. Untuk action seperti memcached
, redis
, mysql_add
, dan mysql
, harus ditambahkan mapping-nya.
Edit atau tambahkan array pada file routing:
php
<?php
return array(
'_root_' => 'welcome/index', // Default: welcome/index
'_404_' => 'welcome/404', // Halaman error 404
// Routing untuk action demo
'memcached' => 'welcome/memcached',
'redis' => 'welcome/redis',
'mysql_add' => 'welcome/mysql_add',
'mysql' => 'welcome/mysql',
// ... Routing lainnya
);
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
Mengakses dan Menguji Website
Kini Anda bisa mengakses domain lokal yang telah dikonfigurasi, misal https://servbay-fuelphp-test.local
, via browser untuk testing koneksi FuelPHP dan integrasi database/cache.
- Akses halaman utama:
https://servbay-fuelphp-test.local
- Output:
Hello ServBay!
- Output:
- Test Memcached:
https://servbay-fuelphp-test.local/memcached
- Output pertama:
Hello Memcached from ServBay! (from cache)
(jika cache normal) - Output berikutnya:
Hello Memcached from ServBay! (cached)
(cache belum expired)
- Output pertama:
- Test Redis:
https://servbay-fuelphp-test.local/redis
- Output:
Hello Redis from ServBay!
(jika layanan Redis normal)
- Output:
- Insert user ke MySQL:
https://servbay-fuelphp-test.local/mysql_add
- Output:
User added with ID: [ID barunya]
(jika MySQL & db/tabel sudah siap)
- Output:
- Ambil daftar user MySQL:
https://servbay-fuelphp-test.local/mysql
- Output: JSON array berisi semua user di tabel
users
(jika MySQL & tabel sudah terisi)
- Output: JSON array berisi semua user di tabel
Tentang HTTPS: ServBay otomatis mengatur sertifikat SSL untuk website lokal dengan ServBay User CA/Public CA. Jika browser memperingatkan sertifikat tidak terpercaya, pastikan CA ServBay sudah di-trust pada sistem Anda.
Perhatian
- Pastikan di antarmuka ServBay seluruh layanan utama seperti PHP, Caddy (atau Nginx/Apache), MySQL, Redis, Memcached, dll, dalam status running.
- Anda wajib membuat database
fuel_dev
sendiri melalui tool admin ServBay (atau pastikan database yang dipakai sudah ada didb.php
). Tool migrasi FuelPHP (oil refine migrate
) hanya membuat tabel, bukan database. - File entry point FuelPHP adalah
public/index.php
, jadi pada pengaturan Website ServBay, direktori root harus mengarah ke folderpublic
di proyek.
Ringkasan
Dengan ServBay, Anda bisa setup environment lengkap untuk proyek FuelPHP di macOS dengan mudah dan cepat. Artikel ini telah membahas pembuatan proyek FuelPHP, konfigurasi website lokal di ServBay, pengaturan database dan cache, beserta contoh kode untuk pengujian semua layanan. Berbagai tool dan layanan yang sudah terintegrasi di ServBay mempermudah workflow dan meningkatkan produktivitas Anda.
Semoga panduan ini berguna untuk memulai perjalanan pengembangan FuelPHP Anda dengan ServBay!