Mencipta & Menjalankan Projek FuelPHP dalam Persekitaran Tempatan ServBay
Apa itu FuelPHP?
FuelPHP ialah rangka kerja PHP yang fleksibel dan modular, direka khas untuk membangunkan aplikasi web moden. Ia mengadaptasi corak reka bentuk Model-View-Controller Hierarki (HMVC), menawarkan ciri dan alat yang menyeluruh bagi membantu pembangun membina aplikasi web berkualiti tinggi secara pantas dan cekap. FuelPHP terkenal dengan fleksibiliti, prestasi tinggi, dan kemudahan untuk diperluaskan, menjadikannya pilihan utama bagi ramai pembangun PHP.
Ciri Utama & Kelebihan FuelPHP
- Seni bina HMVC: Menyokong reka bentuk MVC bertingkat, memudahkan pengurusan kod, pengulangan semula, dan pembangunan modular—sangat sesuai untuk projek besar atau kompleks.
- Prestasi Tinggi: Direka bentuk dengan penekanan kepada pengoptimuman, FuelPHP terkenal dengan kepantasan dan kecekapan dalam penggunaan sumber bagi menangani permintaan serentak yang tinggi.
- Mudah Diperluaskan: Menyediakan mekanisme pelanjutan yang mantap, membolehkan pembangun mengintegrasi pustaka pihak ketiga atau menambah ciri khas dengan mudah mengikut keperluan projek.
- Keselamatan: Dilengkapi pelbagai ciri keselamatan seperti pengesahan input automatik, penapisan output (menghalang XSS), perlindungan CSRF, pencegahan suntikan SQL, dan lain-lain untuk membina aplikasi yang selamat.
- Komuniti Sokongan Kukuh: FuelPHP mempunyai komuniti pembangun yang aktif, membolehkan sokongan pantas dan akses kepada pelbagai sumber pihak ketiga.
Dengan kelebihan ini, FuelPHP membantu pembangun membina aplikasi web yang berkualiti tinggi, selamat, dan mudah diselenggara—sesuai untuk projek berskala kecil hingga perusahaan berskala besar.
Sediakan Persekitaran FuelPHP Dengan ServBay
ServBay ialah persekitaran pembangunan web tempatan khusus untuk pembangun, lengkap dengan pelbagai perkhidmatan dan alat sedia seperti PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis dan sebagainya. Dengan ServBay, anda boleh membina persekitaran pemerhatian FuelPHP dengan mudah tanpa pemasangan manual atau konfigurasi banyak kebergantungan.
Panduan ini mengajar anda cara menggunakan PHP, pelayan web (Caddy), serta perkhidmatan pangkalan data dan cache yang disediakan oleh ServBay untuk mencipta dan menjalankan projek FuelPHP anda. Kita juga akan memanfaatkan ciri Laman Web ServBay untuk mengkonfigurasi pelayan web dan mengakses projek FuelPHP secara pantas.
Prasyarat
Sebelum mula, sila pastikan perkara berikut dipenuhi:
- ServBay telah dipasang dan dijalankan dengan jayanya di macOS anda.
- Persekitaran PHP di ServBay telah diaktifkan (diaktifkan secara lalai).
- Perkhidmatan pangkalan data (contoh: MySQL) dan cache (contoh: Redis, Memcached) yang anda rancang gunakan telah dimulakan dan berfungsi dengan baik dalam ServBay.
- Composer telah disediakan secara lalai dalam ServBay—tiada pemasangan tambahan diperlukan.
Cipta Projek FuelPHP
Laluan Cadangan Simpan Projek
ServBay mencadangkan semua projek laman web disimpan dalam direktori /Applications/ServBay/www
untuk memudahkan pengurusan dan konfigurasi. Panduan ini juga menggunakan laluan ini sebagai contoh.
Tukar ke direktori root laman web
Buka Terminal dan tukar ke direktori root laman web yang dicadangkan oleh ServBay:
bashcd /Applications/ServBay/www
1Cipta direktori projek
Cipta folder baharu untuk projek FuelPHP anda dan masuk ke dalamnya:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app
1
2Cipta projek FuelPHP menggunakan Composer
Dalam direktori projek, gunakan Composer untuk memuat turun dan memulakan FuelPHP. Gunakan
.
untuk memasang ke direktori semasa:bashcomposer create-project fuel/fuel .
1Composer akan secara automatik memuat turun rangka kerja FuelPHP dan kebergantungannya ke dalam direktori
servbay-fuelphp-app
.
Konfigurasi Pelayan Web (Menggunakan Fungsi Laman Web ServBay)
Untuk membolehkan projek FuelPHP diakses melalui pelayar web, gunakan fungsi Laman Web dalam ServBay untuk konfigurasi hos maya.
- Buka antara muka utama ServBay.
- Klik pada menu Laman Web di sidebar.
- Tekan butang Tambah Laman Web di penjuru kanan atas.
- Isikan maklumat berikut pada tetingkap konfigurasi:
- Nama: Namakan laman web anda, contohnya
My First FuelPHP Dev Site
. - Domain: Tetapkan domain pembangunan tempatan, contohnya
servbay-fuelphp-test.local
(ServBay akan menghalakan domain ini ke localhost secara automatik). - Jenis laman web: Pilih
PHP
. - Versi PHP: Pilih versi PHP yang anda mahu contohnya
8.3
. - Direktori root laman web: Tetapkan jalan masuk projek FuelPHP iaitu
public/index.php
. Jadi root mestipublic
:/Applications/ServBay/www/servbay-fuelphp-app/public
.
- Nama: Namakan laman web anda, contohnya
- Klik Tambah untuk menyimpan konfigurasi.
ServBay akan mengemaskini konfigurasi Caddy secara automatik dan memuat semula perkhidmatan supaya domain ini mula berfungsi.
Untuk langkah lebih terperinci, rujuk dokumentasi ServBay dalam Tambah Laman Web Pertama.
Konfigurasi Sambungan Perkhidmatan Projek FuelPHP
Biasanya projek FuelPHP memerlukan konfigurasi sambungan kepada perkhidmatan pangkalan data dan cache.
Konfigurasi Pangkalan Data
Fail konfigurasi pangkalan data FuelPHP terletak di fuel/app/config/development/db.php
. Edit fail ini untuk tetapan sambungan. Contoh jika anda menggunakan MySQL lalai ServBay:
php
<?php
/**
* Tetapan pangkalan data pembangunan. Digabungkan dengan tetapan global.
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // Pastikan pangkalan data fuel_dev sudah diwujudkan
'username' => 'root', // Username lalai MySQL ServBay
'password' => 'root', // Kata laluan lalai (hanya untuk pembangunan tempatan!)
],
'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
fuel_dev
secara manual menggunakan alat pentadbiran ServBay seperti phpMyAdmin atau Adminer. Pengguna lalai ServBay ialahroot
dan kata laluannyaroot
—hanya untuk pembangunan tempatan! 'identifier' => '
'` penting untuk MySQL supaya nama jadual dan medan dirujuk dengan betul.
Konfigurasi Cache (Memcached & Redis)
FuelPHP menyokong pelbagai pemacu cache. Anda boleh melakukan konfigurasi pada fail fuel/app/config/cache.php
. Pastikan perkhidmatan Memcached dan/atau Redis telah dimulakan di ServBay.
Contoh konfigurasi Memcached (fuel/app/config/cache.php
):
Jika anda ingin menggunakan Memcached sebagai pemacu utama:
php
<?php
return [
'driver' => 'memcached', // Tetapkan pemacu lalai kepada memcached
'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, // Tetapkan sama ada mahu menggunakan mampatan
],
// ... konfigurasi 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 di ServBay biasanya sudah dilengkapi perluasan Memcached.
Contoh konfigurasi Redis (fuel/app/config/redis.php
):
Jika menggunakan Redis, lakukan konfigurasi di fail tersendiri:
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 menambah sambungan Redis lain
];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Perluasan Redis juga telah dipasang secara lalai dalam ServBay.
Contoh Integrasi Pangkalan Data & Cache
Untuk penerangan, mari tambah beberapa kod demonstrasi bagaimana FuelPHP berinteraksi dengan pangkalan data dan cache.
Sediakan Jadual Pangkalan Data (Migrasi FuelPHP)
FuelPHP menawarkan alat Oil untuk migrasi pangkalan data iaitu kawalan versi bagi skema pangkalan data.
Cipta fail migrasi
Dalam root projek (
servbay-fuelphp-app
), gunakan Oil untuk cipta migrasi jadualusers
:bashphp oil generate migration create_users_table
1Ini akan menghasilkan fail baharu pada
fuel/app/migrations
yang dinamakan dengan masa penciptaan.Edit fail migrasi
Buka fail migrasi baharu (
fuel/app/migrations/xxxxxxxxxxxx_create_users_table.php
), edit kaedahup()
dandown()
: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, index, enjin dan set aksara } public function down() { // Padam jadual users (untuk 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
Di root projek, jalankan migrasi dengan Oil:
bashphp oil refine migrate
1Jika tiada masalah, jadual
users
akan dicipta dalam pangkalan datafuel_dev
.
Tambah Kod Contoh Pengawal
Edit fail fuel/app/classes/controller/welcome.php
, tambah tindakan (action) contoh untuk pangkalan data dan cache:
php
<?php
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
use Fuel\Core\DB; // Import DB facade
use Fuel\Core\Redis; // Import Redis facade
class Controller_Welcome extends Controller
{
// Tindakan halaman utama
public function action_index()
{
return Response::forge('Hello ServBay!');
}
// Tindakan contoh Memcached
public function action_memcached()
{
// Cuba dapat data dari cache
$value = Cache::get('servbay_memcached_key');
if ($value === false) {
// Jika tiada dalam cache, tetapkan 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);
}
// Tindakan contoh Redis
public function action_redis()
{
// Dapatkan contoh Redis (sambungan lalai)
$redis = \Redis_Db::instance();
// Jika ada sambungan lain: \Redis_Db::instance('connection_name')
// Tetapkan 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);
}
// Tindakan contoh MySQL: Tambah data
public function action_mysql_add()
{
try {
// Masukkan rekod ke jadual users
$result = DB::insert('users')->set([
'name' => 'ServBay Demo User ' . time(), // Guna masa untuk keunikan
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute();
return Response::forge('User added with ID: ' . $result[0]);
} catch (\Database_Exception $e) {
// Tangkap ralat pangkalan data (contoh: email duplikat)
return Response::forge('Error adding user: ' . $e->getMessage(), 500);
}
}
// Tindakan contoh MySQL: Baca data
public function action_mysql()
{
// Ambil semua rekod dari jadual users
$users = DB::select('id', 'name', 'email')->from('users')->execute()->as_array();
// Pulangkan 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:
- Kod di atas menggunakan fasad DB dan Redis untuk akses mudah.
- Nama kunci cache menggunakan prefiks
servbay_
bagi elak konflik. - Tindakan MySQL add masukkan masa dan pengendalian ralat ringkas.
- FuelPHP 1.x menggunakan
\Redis_Db::instance()
untuk capaian Redis.
Konfigurasi Laluan
Supaya anda boleh mengakses setiap action melalui URL, perlu tetapkan laluan dalam fail fuel/app/config/routes.php
. FuelPHP sudah tetapkan laluan ke Controller_Welcome
secara lalai, tetapi untuk memcached
, redis
, mysql_add
, dan mysql
, tambahkan laluan spesifik.
Ubah/tambah pada array yang dikembalikan:
php
<?php
return array(
'_root_' => 'welcome/index', // Laluan utama ke action index
'_404_' => 'welcome/404', // Laluan halaman ralat 404
// Tetapan laluan untuk tindakan contoh
'memcached' => 'welcome/memcached',
'redis' => 'welcome/redis',
'mysql_add' => 'welcome/mysql_add',
'mysql' => 'welcome/mysql',
// ... konfigurasi laluan 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
Akses & Ujian Laman Web
Selepas semua langkah, anda kini boleh menguji projek FuelPHP dan sambungan perkhidmatan melalui domain yang telah disetkan di ServBay, contoh: https://servbay-fuelphp-test.local
.
- Halaman utama:
https://servbay-fuelphp-test.local
- Jangkaan output:
Hello ServBay!
- Jangkaan output:
- Ujian Memcached:
https://servbay-fuelphp-test.local/memcached
- Lawatan kali pertama:
Hello Memcached from ServBay! (from cache)
(cache berfungsi) - Lawatan seterusnya:
Hello Memcached from ServBay! (cached)
(belum luput)
- Lawatan kali pertama:
- Ujian Redis:
https://servbay-fuelphp-test.local/redis
- Jangkaan output:
Hello Redis from ServBay!
(Redis OK)
- Jangkaan output:
- Tambah pengguna (MySQL):
https://servbay-fuelphp-test.local/mysql_add
- Output:
User added with ID: [ID baru]
(jika database dan jadual tersedia)
- Output:
- Senarai pengguna (MySQL):
https://servbay-fuelphp-test.local/mysql
- Output: array JSON dengan semua rekod jadual
users
(jika ada data)
- Output: array JSON dengan semua rekod jadual
Tentang HTTPS: ServBay secara automatik mengkonfigurasi SSL untuk laman web tempatan dan menguruskan sijil melalui ServBay User CA atau ServBay Public CA. Jika pelayar memberi amaran sijil tak dipercayai, pastikan CA ServBay telah diimport dan dipercayai dalam sistem anda.
Perhatian
- Pastikan PHP, Caddy (atau Nginx/Apache), MySQL (jika digunakan), Redis dan Memcached semuanya berjalan dalam antara muka utama ServBay.
- Anda mesti telah mencipta database
fuel_dev
secara manual dalam alat pengurusan database ServBay (atau tukar kepada database lain yang sedia ada didb.php
). Tool migrasi FuelPHP (oil refine migrate
) hanya akan cipta jadual, bukan database. - Fail masuk utama FuelPHP ialah
public/index.php
, jadi direktori root pada konfigurasi Laman Web ServBay mesti menunjuk ke folderpublic
projek.
Rumusan
Dengan ServBay, anda boleh membina persekitaran pembangunan FuelPHP lengkap di macOS dengan amat mudah. Panduan ini telah menjelaskan langkah demi langkah untuk mencipta projek FuelPHP, konfigurasi ciri Laman Web ServBay, sambungan ke pangkalan data dan cache, serta ujian fungsi melalui kod contoh. Integrasi perkhidmatan dan proses konfigurasi dipermudah oleh ServBay, membolehkan anda memaksimumkan produktiviti pembangunan.
Semoga panduan ini dapat membantu anda memulakan perjalanan pembangunan FuelPHP anda di ServBay dengan lancar!