Membuat dan Menjalankan Proyek FuelPHP di Lingkungan Pengembangan Lokal ServBay
Apa Itu FuelPHP?
FuelPHP adalah framework PHP yang fleksibel dan modular, dirancang khusus untuk membangun aplikasi web modern. Framework ini mengikuti pola desain Model-View-Controller Hirarkis (HMVC - Hierarchical Model-View-Controller) dan dilengkapi dengan berbagai fitur serta alat yang kaya, yang bertujuan membantu pengembang membangun aplikasi web berkualitas tinggi secara cepat dan efisien. Dengan fleksibilitas tinggi, performa optimal, serta kemudahan untuk diekstensikan, FuelPHP telah menjadi pilihan utama banyak pengembang PHP.
Fitur Utama dan Kelebihan FuelPHP
- Arsitektur HMVC: Mendukung pola desain MVC bertingkat, sehingga memudahkan pengorganisasian kode, penggunaan ulang, serta pengembangan secara modular—sangat ideal untuk proyek besar atau kompleks.
- Performa Tinggi: FuelPHP dirancang dengan fokus pada performa, terkenal akan kecepatan eksekusinya dan efisiensi penggunaan sumber daya, sehingga sangat sesuai untuk menangani permintaan trafik tinggi.
- Mudah Diekstensikan: Framework ini menyediakan mekanisme ekstensi yang kuat, memungkinkan pengembang mengintegrasikan library pihak ketiga atau menambah fitur khusus sesuai kebutuhan proyek.
- Keamanan: Sudah dilengkapi berbagai fitur keamanan seperti validasi input otomatis, filter output (mencegah XSS), perlindungan CSRF, dan pencegahan SQL injection, sehingga membantu membangun aplikasi yang lebih aman.
- Dukungan Komunitas yang Kuat: FuelPHP memiliki komunitas pengembang yang aktif, menyediakan bantuan cepat dan banyak resource pihak ketiga.
Berkat fitur-fitur ini, FuelPHP dapat membantu developer membangun aplikasi web dengan performa tinggi, aman, dan mudah dipelihara—cocok untuk segala skala, mulai dari proyek kecil hingga aplikasi tingkat enterprise.
Menyiapkan Lingkungan Pengembangan FuelPHP dengan ServBay
ServBay adalah lingkungan pengembangan web lokal yang dirancang khusus untuk pengembang. Di dalamnya telah pre-instal layanan dan alat penting seperti PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis, dan lainnya. Dengan ServBay, Anda dapat dengan mudah mempersiapkan seluruh kebutuhan eksekusi proyek FuelPHP tanpa harus repot mengonfigurasi dependensi satu per satu secara manual.
Panduan ini menguraikan cara memanfaatkan PHP environment, server web (Caddy), serta layanan database dan cache dari ServBay untuk membuat dan menjalankan proyek FuelPHP. Kita akan menggunakan fitur Website pada ServBay untuk mengatur server web, sehingga Anda bisa langsung mengakses dan menguji aplikasi dengan langkah-langkah mudah.
Prasyarat
Sebelum memulai, pastikan hal-hal berikut telah terpenuhi:
- Anda telah berhasil menginstal dan menjalankan ServBay di macOS.
- Environment PHP pada ServBay sudah diaktifkan (aktif secara default).
- Layanan database (misal MySQL) dan cache (misal Redis, Memcached) yang Anda rencanakan sudah berjalan dan aktif di ServBay.
- Composer sudah terintegrasi di ServBay, jadi tak perlu menginstal terpisah.
Membuat Proyek FuelPHP
Direktori penyimpanan proyek yang disarankan
ServBay menyarankan agar seluruh proyek website disimpan di direktori /Applications/ServBay/www
untuk kemudahan pengelolaan dan konfigurasi. Panduan ini juga akan menggunakan direktori tersebut sebagai contoh.
Masuk ke direktori root website
Buka aplikasi Terminal, lalu berpindah ke direktori website yang direkomendasikan oleh ServBay:
bashcd /Applications/ServBay/www
1Buat direktori proyek
Buat direktori baru untuk proyek FuelPHP Anda lalu masuk ke dalamnya:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app
1
2Inisialisasi proyek FuelPHP dengan Composer
Di direktori proyek, gunakan Composer untuk mendownload dan menginisialisasi FuelPHP. Tanda
.
berarti proyek akan dibuat di direktori saat ini:bashcomposer create-project fuel/fuel .
1Composer akan otomatis mengunduh framework FuelPHP beserta semua dependensinya ke dalam direktori
servbay-fuelphp-app
.
Konfigurasi Server Web (Menggunakan Fitur Website ServBay)
Agar proyek FuelPHP dapat diakses melalui browser, Anda perlu mengatur virtual host dengan fitur Website dari ServBay.
- Buka antarmuka utama ServBay.
- Klik menu Website di sidebar.
- Tekan tombol Tambah Website di pojok kanan atas antarmuka.
- Pada jendela konfigurasi yang muncul, isikan:
- Nama: Beri nama yang mudah dikenali, misal
My First FuelPHP Dev Site
. - Domain: Atur domain lokal, misal
servbay-fuelphp-test.local
. ServBay akan mengaitkan domain ini ke lokal komputer Anda. - Tipe Website: Pilih
PHP
. - Versi PHP: Pilih versi PHP yang diinginkan, misal
8.3
. - Root Directory Website: Tentukan folder entry point FuelPHP—yakni file
public/index.php
. Jadi root harus diarahkan ke subdirektoripublic
pada proyek:/Applications/ServBay/www/servbay-fuelphp-app/public
.
- Nama: Beri nama yang mudah dikenali, misal
- Klik Tambah untuk menyimpan pengaturan.
ServBay akan otomatis memperbarui konfigurasi Caddy dan me-reload service sehingga domain baru langsung aktif.
Langkah detail menambahkan website juga bisa Anda temukan di dokumentasi ServBay melalui Menambah Website Pertama.
Mengatur Koneksi Layanan pada Proyek FuelPHP
Proyek FuelPHP umumnya membutuhkan konfigurasi untuk koneksi ke layanan seperti database dan cache.
Konfigurasi Database
Konfigurasi database FuelPHP terletak di file fuel/app/config/development/db.php
. Edit file tersebut sesuai pengaturan database Anda. Berikut contoh jika Anda menggunakan layanan MySQL default dari ServBay:
php
<?php
/**
* Pengaturan database untuk development. Ini akan digabungkan dengan pengaturan global.
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // Pastikan database fuel_dev sudah ada
'username' => 'root', // User MySQL default di ServBay
'password' => 'root', // Password MySQL ServBay (hanya untuk pengembangan lokal!)
],
'identifier' => '`', // MySQL membutuhkan 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 melalui tool manajemen database di ServBay (seperti phpMyAdmin atau Adminer). Username dan password MySQL default ServBay adalahroot
/root
—disarankan hanya untuk pengembangan lokal. 'identifier' => '
'` wajib digunakan pada MySQL untuk memastikan nama tabel dan kolom direferensi dengan benar.
Konfigurasi Cache (Memcached & Redis)
FuelPHP mendukung berbagai driver cache. Konfigurasikan driver dan informasi koneksi cache di fuel/app/config/cache.php
. Pastikan Memcached dan/atau Redis di ServBay sudah berjalan.
Konfigurasi Memcached (fuel/app/config/cache.php
):
Jika Anda menggunakan Memcached sebagai cache default:
php
<?php
return [
'driver' => 'memcached', // Pilih memcached sebagai driver utama
'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 atau nonaktifkan kompresi
],
// ... Konfigurasi driver cache lainnya
];
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
Umumnya, PHP bawaan dari ServBay sudah dilengkapi ekstensi Memcached.
Konfigurasi Redis (fuel/app/config/redis.php
):
Jika Anda menggunakan Redis, Anda perlu mengatur koneksinya pada file khusus redis.php
:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Alamat default Redis
'port' => 6379, // Port default Redis
'database' => 0, // Indeks database Redis
],
// Anda dapat menambah beberapa koneksi Redis jika dibutuhkan
];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
ServBay juga biasanya sudah menyiapkan ekstensi Redis pada PHP yang disediakannya.
Contoh Layanan Database dan Cache
Untuk mendemonstrasikan interaksi FuelPHP dengan database dan cache, mari tambahkan beberapa contoh kode.
Menyiapkan Tabel Database (menggunakan FuelPHP Migrations)
FuelPHP menyediakan alat Oil untuk mengelola migrasi database, yakni versi kontrol untuk struktur database.
Buat file migration
Dari direktori root proyek (
servbay-fuelphp-app
), gunakan alat Oil untuk membuat file migration yang mendefinisikan tabelusers
:bashphp oil generate migration create_users_table
1File migration baru akan muncul di
fuel/app/migrations
, lengkap dengan timestamp pada namanya.Edit file migration
Buka file tersebut (
fuel/app/migrations/xxxxxxxxxxxx_create_users_table.php
), edit methodup()
untuk mendefinisikan tabel, dandown()
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'); // Tentukan primary key, index, engine & 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 migration
Dari root proyek, jalankan perintah Oil berikut untuk membuat tabel database:
bashphp oil refine migrate
1Jika berhasil, tabel
users
akan tercipta pada databasefuel_dev
.
Menambahkan Contoh Kode Controller
Edit file fuel/app/classes/controller/welcome.php
, lalu tambahkan fungsi-fungsi berikut untuk mendemonstrasikan interaksi database dan cache:
php
<?php
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
use Fuel\Core\DB; // Mengimpor DB facade
use Fuel\Core\Redis; // Mengimpor Redis facade
class Controller_Welcome extends Controller
{
// Action halaman utama
public function action_index()
{
return Response::forge('Hello ServBay!');
}
// Contoh Memcached
public function action_memcached()
{
// Mendapatkan data dari cache
$value = Cache::get('servbay_memcached_key');
if ($value === false) {
// Jika belum ada, set value baru
$value = 'Hello Memcached from ServBay!';
Cache::set('servbay_memcached_key', $value, 60); // Cache selama 60 detik
$value .= ' (from cache)';
} else {
$value .= ' (cached)';
}
return Response::forge($value);
}
// Contoh Redis
public function action_redis()
{
// Mendapatkan instance Redis (koneksi default)
$redis = \Redis_Db::instance(); // FuelPHP 1.x: Redis_Db::instance()
// Alternatif jika ada beberapa koneksi, gunakan \Redis_Db::instance('nama_koneksi')
// Set nilai ke Redis
$redis->set('servbay_redis_key', 'Hello Redis from ServBay!');
// Ambil nilai dari Redis
$value = $redis->get('servbay_redis_key');
return Response::forge($value);
}
// Contoh Menulis ke MySQL
public function action_mysql_add()
{
try {
// Insert record ke tabel users
$result = DB::insert('users')->set([
'name' => 'ServBay Demo User ' . time(), // Timestamp agar unik
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute(); // execute() mengembalikan array ID baru
return Response::forge('User added with ID: ' . $result[0]);
} catch (\Database_Exception $e) {
// Tangani error database, misal email duplikat
return Response::forge('Error adding user: ' . $e->getMessage(), 500);
}
}
// Contoh Membaca Data dari MySQL
public function action_mysql()
{
// Query seluruh record dari tabel users
$users = DB::select('id', 'name', 'email')->from('users')->execute()->as_array();
// Return daftar 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:
- Di sini, DB dan Redis facade di-import (
use Fuel\Core\DB;
,use Fuel\Core\Redis;
) agar bisa langsung digunakan. - Prefix kunci cache menggunakan
servbay_
untuk menghindari konflik. - Contoh insert ke MySQL menggunakan timestamp dan penanganan eror sederhana untuk kejelasan logika.
- Pada FuelPHP 1.x, untuk mendapatkan instance Redis digunakan
\Redis_Db::instance()
.
Konfigurasi Routing
Agar URL dapat mengakses action controller yang telah dibuat, atur routing di fuel/app/config/routes.php
. FuelPHP sudah memiliki routing default ke Controller_Welcome
, namun untuk memcached
, redis
, mysql_add
, dan mysql
, kita perlu menambahkannya.
Di file fuel/app/config/routes.php
, edit atau tambahkan array berikut:
php
<?php
return array(
'_root_' => 'welcome/index', // Route default ke action index controller welcome
'_404_' => 'welcome/404', // Route untuk halaman 404
// Routing untuk contoh action baru
'memcached' => 'welcome/memcached',
'redis' => 'welcome/redis',
'mysql_add' => 'welcome/mysql_add',
'mysql' => 'welcome/mysql',
// ... routing lain sesuai kebutuhan
);
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 & Menguji Website
Sekarang Anda bisa membuka browser dan mengakses domain ServBay yang sudah dikonfigurasi, misal https://servbay-fuelphp-test.local
, untuk menguji aplikasi FuelPHP beserta koneksi layanannya.
- Akses halaman utama:
https://servbay-fuelphp-test.local
- Output yang diharapkan:
Hello ServBay!
- Output yang diharapkan:
- Uji Memcached:
https://servbay-fuelphp-test.local/memcached
- Akses pertama akan menghasilkan:
Hello Memcached from ServBay! (from cache)
(jika cache aktif) - Akses ulang:
Hello Memcached from ServBay! (cached)
(jika cache tetap aktif)
- Akses pertama akan menghasilkan:
- Uji Redis:
https://servbay-fuelphp-test.local/redis
- Output:
Hello Redis from ServBay!
(jika Redis berjalan normal)
- Output:
- Tambah user ke MySQL:
https://servbay-fuelphp-test.local/mysql_add
- Output:
User added with ID: [ID baru]
(jika MySQL & tabel tersedia)
- Output:
- Lihat daftar user:
https://servbay-fuelphp-test.local/mysql
- Output: Array JSON berisi seluruh record di tabel
users
(jika ada data & tabel valid)
- Output: Array JSON berisi seluruh record di tabel
Tentang HTTPS: ServBay secara otomatis mengonfigurasi sertifikat SSL untuk website lokal dan mengelolanya lewat ServBay User CA atau ServBay Public CA. Jika browser memperingatkan bahwa sertifikat tidak terpercaya, pastikan Anda telah menandatangani dan mempercayai CA ServBay di macOS.
Hal yang Perlu Diperhatikan
- Pastikan di antarmuka ServBay, seluruh servis—seperti PHP versi yang digunakan, Caddy/Nginx/Apache, MySQL (jika pakai database), Redis, serta Memcached—dalam kondisi running.
- Jangan lupa untuk membangun database
fuel_dev
secara manual lewat tool manajemen database di ServBay (atau gunakan nama database lain yang sudah dibuat, lalu atur didb.php
). Tool migrasi FuelPHP (oil refine migrate
) hanya akan membuat tabel, bukan database. - File entry point FuelPHP adalah
public/index.php
, jadi pastikan pada konfigurasi Website ServBay, Root Directory diarahkan ke subfolderpublic
dari proyek Anda.
Kesimpulan
Dengan ServBay, Anda bisa dengan mudah dan cepat menyiapkan lingkungan pengembangan lengkap untuk proyek FuelPHP di macOS. Panduan ini telah membahas langkah-langkah mulai dari membuat proyek FuelPHP, mengonfigurasi fitur Website di ServBay, mengatur koneksi ke layanan database dan cache, hingga menguji fungsionalitas dengan kode contoh. Berbagai layanan terintegrasi dan proses konfigurasi yang disederhanakan dari ServBay akan sangat meningkatkan produktivitas pengembangan Anda.
Semoga panduan ini membantu Anda memulai perjalanan pengembangan FuelPHP dengan mulus menggunakan ServBay!