Mencipta dan Menjalankan Projek FuelPHP dalam Persekitaran Pembangunan Tempatan ServBay
Apakah itu FuelPHP?
FuelPHP ialah rangka kerja PHP yang fleksibel dan modular, direka khusus untuk membina aplikasi web moden. Ia mengikut corak reka bentuk Model-View-Controller Berhierarki (HMVC - Hierarchical Model-View-Controller), menawarkan pelbagai ciri serta alat yang membantu pembangun membina aplikasi web berkualiti tinggi dengan pantas dan cekap. FuelPHP menjadi pilihan ramai pembangun PHP kerana fleksibilitinya yang tinggi, prestasi mengagumkan serta kebolehskalaan yang mudah.
Ciri-ciri dan Kelebihan Utama FuelPHP
- Seni Bina HMVC: Menyokong corak MVC berhierarki yang membantu dalam pengurusan kod, pengunaan semula, dan pembangunan modular—amat sesuai untuk projek berskala besar atau kompleks.
- Prestasi Tinggi: Direka bentuk dengan penekanan terhadap pengoptimuman prestasi, FuelPHP dikenali dengan kepantasan dan penggunaan sumbernya yang cekap, mampu mengendalikan permintaan serentak yang banyak.
- Mudah Dikembangkan: Menyediakan mekanisme peluasan yang mantap; pembangun boleh dengan mudah mengintegrasikan pustaka pihak ketiga atau menambah fungsi tersuai mengikut keperluan projek.
- Keselamatan: Fungsi keselamatan terbina seperti validasi input automatik, penapisan output (elak XSS), perlindungan CSRF, pencegahan suntikan SQL dan banyak lagi membantu pembangun membina aplikasi yang lebih selamat.
- Sokongan Komuniti yang Kuat: Komuniti pembangun FuelPHP sangat aktif, membolehkan anda mendapatkan bantuan dan sumber pihak ketiga dengan pantas.
Dengan ciri-ciri ini, FuelPHP dapat membantu anda membina aplikasi web yang berprestasi tinggi, selamat dan mudah disenggara, sesuai untuk projek kecil hingga perusahaan besar.
Menyediakan Persekitaran Pembangunan FuelPHP menggunakan ServBay
ServBay ialah persekitaran pembangunan web tempatan yang direka untuk pembangun, lengkap dengan PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis, dan pelbagai perkhidmatan serta alat lain. Dengan ServBay, anda boleh menyediakan persekitaran yang diperlukan untuk projek FuelPHP anda dengan mudah, tanpa memasang atau mengkonfigurasi kebergantungan secara manual.
Panduan ini akan menerangkan langkah demi langkah cara menggunakan persekitaran PHP ServBay, pelayan web (Caddy), serta perkhidmatan pangkalan data dan cache untuk mencipta dan menjalankan projek FuelPHP. Kita akan memanfaatkan fungsi Laman Web (Websites) dalam ServBay untuk mengkonfigurasi pelayan web, serta mengakses dan menguji projek dengan mudah.
Prasyarat
Sebelum bermula, pastikan anda telah memenuhi syarat berikut:
- ServBay telah dipasang dan dijalankan dengan berjaya pada macOS anda.
- Persekitaran PHP dalam ServBay telah diaktifkan (diaktifkan secara lalai).
- Perkhidmatan pangkalan data (seperti MySQL) dan cache (seperti Redis, Memcached) yang anda ingin gunakan telah dijalankan dan berfungsi dalam ServBay.
- Composer telah disediakan bersama ServBay—tiada pemasangan tambahan diperlukan.
Mencipta Projek FuelPHP
Laluan Simpanan Projek yang Disarankan
ServBay mencadangkan projek laman web diletakkan di direktori /Applications/ServBay/www
untuk kemudahan pengurusan dan konfigurasi. Panduan ini juga akan guna direktori tersebut sebagai contoh.
Tukar ke Direktori Akar Laman Web
Buka aplikasi Terminal dan tukar direktori ke akar laman web yang disarankan oleh ServBay:
bashcd /Applications/ServBay/www
1Cipta Direktori Projek
Cipta direktori baru untuk projek FuelPHP anda dan masuk ke dalam direktori tersebut:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app
1
2Gunakan Composer untuk Membina Projek FuelPHP
Dalam direktori projek, gunakan Composer untuk memuat turun dan menjana rangka kerja FuelPHP. Tanda
.
bermaksud projek akan dibina dalam direktori semasa:bashcomposer create-project fuel/fuel .
1Composer akan memuat turun FuelPHP serta kebergantungannya ke dalam direktori
servbay-fuelphp-app
anda secara automatik.
Konfigurasi Pelayan Web (menggunakan Fungsi Laman Web ServBay)
Untuk membolehkan projek FuelPHP anda boleh diakses melalui pelayar web, anda perlu menggunakan fungsi Laman Web dalam ServBay bagi mengkonfigurasi hos maya (virtual host).
- Buka antara muka utama ServBay.
- Klik menu Laman Web di bar sisi.
- Tekan butang Tambah Laman Web di sudut atas kanan.
- Dalam tetingkap konfigurasi, lengkapkan maklumat berikut:
- Nama: Beri nama mudah diingat untuk laman web anda, contohnya
My First FuelPHP Dev Site
. - Domain: Tetapkan domain pembangunan tempatan, contohnya
servbay-fuelphp-test.local
. ServBay akan teruskan proses resolusi domain ini ke mesin tempatan anda. - Jenis Laman Web: Pilih
PHP
. - Versi PHP: Pilih versi PHP yang dikehendaki, contohnya
8.3
. - Akar Laman Web: Tetapkan direktori entri projek FuelPHP anda. Fail masuk umum FuelPHP ialah
public/index.php
, jadi akar laman hendaklah ke sub-direktoripublic
:/Applications/ServBay/www/servbay-fuelphp-app/public
.
- Nama: Beri nama mudah diingat untuk laman web anda, contohnya
- Klik Tambah untuk menyimpan konfigurasi.
ServBay akan mengemaskini konfigurasi Caddy secara automatik dan memuat semula perkhidmatan supaya domain baru boleh digunakan.
Untuk panduan lebih terperinci, sila rujuk dokumentasi ServBay pada seksyen Tambah Laman Web Pertama.
Konfigurasi Sambungan Perkhidmatan Projek FuelPHP
Kebiasaannya, projek FuelPHP memerlukan konfigurasi sambungan ke perkhidmatan pangkalan data dan cache.
Konfigurasi Pangkalan Data
Konfigurasi pangkalan data FuelPHP terletak pada fail fuel/app/config/development/db.php
. Edit fail ini untuk mengisi maklumat sambungan pangkalan data anda. Sebagai contoh, jika anda menggunakan perkhidmatan MySQL lalai dalam ServBay:
php
<?php
/**
* Tetapan pangkalan data untuk pembangunan. Ini akan digabungkan dengan tetapan global.
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // Pastikan pangkalan data fuel_dev telah disediakan
'username' => 'root', // Pengguna MySQL lalai ServBay
'password' => 'root', // Kata laluan lalai MySQL ServBay (untuk pembangunan tempatan sahaja!)
],
'identifier' => '`', // MySQL memerlukan tanda backtick sebagai pengecam
],
];
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
Perhatian:
- Anda perlu mencipta pangkalan data bernama
fuel_dev
secara manual melalui alat pengurusan seperti phpMyAdmin atau Adminer dalam ServBay. Pengguna lalai MySQL ialahroot
dengan kata laluanroot
(disarankan untuk persekitaran pembangunan sahaja). 'identifier' => '
'` diperlukan untuk MySQL bagi memastikan nama jadual/ruangan diapit dengan betul.
Konfigurasi Cache (Memcached dan Redis)
FuelPHP menyokong pelbagai pemacu cache. Anda boleh tetapkan pemacu cache serta maklumat sambungan dalam fail fuel/app/config/cache.php
. Pastikan perkhidmatan Memcached dan/atau Redis dalam ServBay telah diaktifkan.
Contoh Konfigurasi Memcached (fuel/app/config/cache.php
):
Jika menetapkan Memcached sebagai cache lalai:
php
<?php
return [
'driver' => 'memcached', // Jadikan memcached sebagai pemacu lalai
'memcached' => [
'cache_id' => 'fuel', // ID cache
'servers' => [
'default' => [
'host' => '127.0.0.1', // Alamat lalai Memcached
'port' => 11211, // Port lalai Memcached
'weight' => 100,
],
],
'compression' => false, // Aktifkan pemampatan jika perlu
],
// ... konfigurasi pemacu 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
Biasanya, extension Memcached sudah dipasang dalam PHP yang disediakan oleh ServBay.
Contoh Konfigurasi Redis (fuel/app/config/redis.php
):
Jika menggunakan Redis pula, masukkan maklumat sambungan pada fail redis.php
:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Alamat lalai Redis
'port' => 6379, // Port lalai Redis
'database' => 0, // Indeks pangkalan data Redis
],
// Anda boleh tetapkan sambungan Redis pelbagai
];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
PHP dalam ServBay biasanya telah dilengkapi extension Redis.
Contoh Penggunaan Perkhidmatan Pangkalan Data dan Cache
Untuk menunjukkan interaksi FuelPHP dengan perkhidmatan pangkalan data dan cache, berikut adalah contoh kod.
Menyediakan Jadual Pangkalan Data (menggunakan Migrations FuelPHP)
Oil ialah alat FuelPHP untuk mengurus migrasi pangkalan data—cara mengawal versi struktur basis data.
Bina Fail Migrasi
Dalam direktori root projek (
servbay-fuelphp-app
), gunakan alat Oil untuk menjana fail migrasi untuk jadualusers
:bashphp oil generate migration create_users_table
1Ini akan mencipta fail migrasi baharu dalam
fuel/app/migrations
(namanya ada cap waktu).Edit Fail Migrasi
Buka fail migrasi baru (
fuel/app/migrations/xxxxxxxxxxxx_create_users_table.php
), dan ubah methodup()
dandown()
seperti berikut:php<?php namespace Fuel\Migrations; use Fuel\Core\DBUtil; class Create_users_table { public function up() { // Cipta jadual 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'); // Tetapkan primary key, aktifkan index, tentukan enjin & charset } public function down() { // Buang jadual 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 projek (
servbay-fuelphp-app
), gunakan alat Oil untuk melaksanakan migrasi dan mencipta jadual pangkalan data:bashphp oil refine migrate
1Jika berjaya, jadual
users
akan diwujudkan dalam databasefuel_dev
.
Menambah Kod Contoh dalam Pengawal
Edit fail fuel/app/classes/controller/welcome.php
untuk menambah fungsi demonstrasi operasi pangkalan data serta cache:
php
<?php
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
use Fuel\Core\DB; // Import facade DB
use Fuel\Core\Redis; // Import facade Redis
class Controller_Welcome extends Controller
{
// Action halaman utama lalai
public function action_index()
{
return Response::forge('Hello ServBay!');
}
// Action contoh Memcached
public function action_memcached()
{
// Cuba ambil data dari cache
$value = Cache::get('servbay_memcached_key');
if ($value === false) {
// Jika tiada dalam cache, masukkan data
$value = 'Hello Memcached from ServBay!';
Cache::set('servbay_memcached_key', $value, 60); // Cache selama 60 saat
$value .= ' (from cache)';
} else {
$value .= ' (cached)';
}
return Response::forge($value);
}
// Action contoh Redis
public function action_redis()
{
// Dapatkan instans Redis (sambungan lalai)
$redis = \Redis_Db::instance(); // FuelPHP 1.x menggunakan Redis_Db::instance()
// Jika banyak sambungan, gunakan \Redis_Db::instance('nama_sambungan')
// Masukkan 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 penulisan MySQL
public function action_mysql_add()
{
try {
// Masuk satu rekod ke jadual users
$result = DB::insert('users')->set([
'name' => 'ServBay Demo User ' . time(), // Guna timestamp untuk unik
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute(); // execute() akan kembalikan array dengan ID baharu
return Response::forge('User added with ID: ' . $result[0]);
} catch (\Database_Exception $e) {
// Tangkap pengecualian DB seperti email duplikat
return Response::forge('Error adding user: ' . $e->getMessage(), 500);
}
}
// Action contoh pembacaan MySQL
public function action_mysql()
{
// Ambil semua rekod dari jadual users
$users = DB::select('id', 'name', 'email')->from('users')->execute()->as_array();
// Pulang senarai pengguna 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
Perhatian:
DB
danRedis
facade diimport (use Fuel\Core\DB;
,use Fuel\Core\Redis;
) untuk mudah digunakan.- Nama kekunci cache bermula dengan
servbay_
bagi elak pertembungan. - Contoh penulisan MySQL menambah stem cop masa dan penanganan ralat mudah untuk demonstrasi yang lebih realistik.
- FuelPHP 1.x menggunakan
\Redis_Db::instance()
bagi mendapatkan instans Redis.
Konfigurasi Routing
Untuk membolehkan anda mengakses Action yang baru ditambah melalui URL, konfigurasikan routing dalam fuel/app/config/routes.php
. FuelPHP akan lalai konfugrasi akses ke Controller_Welcome
, namun untuk Action seperti memcached
, redis
, mysql_add
, dan mysql
adalah perlu untuk tulis konfigurasi khusus.
Dalam fuel/app/config/routes.php
, tambahkan atau ubah kod pada array pulangan seperti berikut:
php
<?php
return array(
'_root_' => 'welcome/index', // Laluan lalai ke action index controller welcome
'_404_' => 'welcome/404', // Laluan halaman 404
// Routing untuk fungsi contoh yang baru
'memcached' => 'welcome/memcached',
'redis' => 'welcome/redis',
'mysql_add' => 'welcome/mysql_add',
'mysql' => 'welcome/mysql',
// ... konfigurasi routing lain
);
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 Laman Web
Kini, anda boleh menguji projek FuelPHP beserta kesemua perkhidmatan yang dihubungkan dengan melawat domain yang telah dikonfigurasikan dalam ServBay, contohnya https://servbay-fuelphp-test.local
.
- Akses halaman utama:
https://servbay-fuelphp-test.local
- Jangkaan output:
Hello ServBay!
- Jangkaan output:
- Uji Memcached:
https://servbay-fuelphp-test.local/memcached
- Lawatan pertama mungkin paparkan:
Hello Memcached from ServBay! (from cache)
(jika cache berfungsi) - Lawatan seterusnya mungkin paparkan:
Hello Memcached from ServBay! (cached)
(jika cache aktif & tidak tamat tempoh)
- Lawatan pertama mungkin paparkan:
- Uji Redis:
https://servbay-fuelphp-test.local/redis
- Jangkaan output:
Hello Redis from ServBay!
(jika Redis berfungsi)
- Jangkaan output:
- Tambah pengguna ke MySQL:
https://servbay-fuelphp-test.local/mysql_add
- Jangkaan output:
User added with ID: [ID baru dimasukkan]
(jika perkhidmatan MySQL aktif dan jadual pengguna ada)
- Jangkaan output:
- Baca senarai pengguna MySQL:
https://servbay-fuelphp-test.local/mysql
- Jangkaan output: Array JSON yang menyenaraikan semua rekod dari jadual
users
(jika MySQL aktif & jadual ada data)
- Jangkaan output: Array JSON yang menyenaraikan semua rekod dari jadual
Mengenai HTTPS: ServBay secara lalai akan menyediakan sijil SSL untuk laman web tempatan anda dan mempercayai melalui ServBay User CA atau ServBay Public CA. Jika pelayar anda memberi amaran sijil tidak dipercayai, pastikan anda telah menambah dan mempercayai sijil CA dari ServBay dalam sistem anda.
Perkara Penting
- Pastikan pada antara muka utama ServBay semua perkhidmatan yang anda gunakan—PHP, Caddy (atau Nginx/Apache), MySQL (jika guna), Redis (jika guna), Memcached (jika guna), dan lain-lain—dalam keadaan berjalan.
- Pastikan anda telah mencipta pangkalan data
fuel_dev
secara manual melalui alat pengurusan pangkalan data ServBay (atau tetapkan nama database lain yang wujud dalam konfigurasidb.php
). Alat migrasi FuelPHPoil refine migrate
akan mencipta jadual pada pangkalan data sedia ada, ia tidak mencipta pangkalan data itu sendiri. - Fail masuk utama FuelPHP ialah
public/index.php
, jadi dalam tetapan Laman Web ServBay, akar laman web wajib dihalakan ke sub-direktoripublic
dalam projek.
Rumusan
Melalui ServBay, anda boleh menyediakan persekitaran pembangunan tempatan lengkap untuk projek FuelPHP pada macOS dengan sangat mudah. Panduan ini menerangkan cara mencipta projek FuelPHP, mengkonfigurasi fungsi Laman Web ServBay, menyambung kepada perkhidmatan pangkalan data dan cache, dan mengesahkan fungsi dengan kod contoh ringkas. Perkhidmatan bersepadu dan proses konfigurasi yang dipermudahkan dalam ServBay akan sangat meningkatkan kecekapan pembangunan anda.
Semoga panduan ini membantu anda memulakan perjalanan pembangunan FuelPHP menggunakan ServBay dengan lancar!