Membina dan Menjalankan Projek PHPixie pada macOS menggunakan ServBay
PHPixie ialah rangka kerja PHP yang ringan berprestasi tinggi, direka untuk pembangunan aplikasi web yang pantas. Ia mengikut corak reka bentuk HMVC (Hierarchical Model-View-Controller), menawarkan struktur kod yang ringkas serta kebolehan pengendalian yang pantas. PHPixie digemari ramai pembangun kerana sifatnya yang mudah, fleksibel, dan bertenaga tinggi.
Ciri-Ciri Utama dan Kelebihan PHPixie
- Ringan: Sistem teras PHPixie sangat padat, hanya mengandungi komponen asas yang diperlukan untuk membina aplikasi, dengan kadar permulaan dan operasi yang pantas.
- Prestasi Tinggi: Reka bentuk rangka kerja memberi tumpuan pada kecekapan, mampu mengendalikan permintaan serentak dengan baik – sesuai untuk aplikasi yang menuntut prestasi.
- Mudah Dipelajari: API yang jelas dan dokumentasi yang lengkap membolehkan pembangun menguasainya dengan pantas.
- Fleksibiliti: Struktur rangka kerja yang longgar membolehkan pembangun bebas memilih dan mengintegrasi perpustakaan serta komponen pihak ketiga mengikut keperluan projek.
- Sokongan Komuniti Aktif: Mempunyai komuniti pembangun yang aktif dengan pelbagai sambungan dan sumber sokongan.
PHPixie membantu pembangun untuk membina aplikasi web berkualiti dan berprestasi tinggi dengan cekap, sesuai dari projek kecil hinggalah aplikasi perusahaan berskala besar.
Membina dan Menjalankan Projek PHPixie dengan ServBay
Panduan ini akan membimbing anda untuk menggunakan persekitaran pembangunan web tempatan yang disediakan ServBay bagi membina dan menjalankan projek PHPixie. Kita akan memanfaatkan persekitaran PHP, Composer, dan fungsi “Laman Web” ServBay untuk mengkonfigurasikan pelayan web, beserta langkah mudah untuk mengakses projek secara lokal dan integrasi pangkalan data/cache.
Prasyarat
- ServBay sudah dipasang dan berjalan pada macOS anda. ServBay mengintegrasi PHP, Composer, pelbagai pangkalan data (MySQL, PostgreSQL, MongoDB, Redis dll) serta pelayan web Caddy.
- Memahami operasi asas baris arahan (command line).
Membina Projek PHPixie
Laluan cadangan untuk laman web
ServBay mengesyorkan supaya semua projek laman web tempatan anda diletakkan di direktori /Applications/ServBay/www
untuk kemudahan pengurusan dan kawalan akses oleh ServBay.
- Sahkan Composer sudah dipasang: ServBay secara lalai sudah datang bersama Composer tanpa perlu pemasangan tambahan. Anda boleh buka terminal dan taip
composer --version
untuk mengesahkan. - Cipta direktori projek: Di direktori akar laman web yang disarankan oleh ServBay, cipta folder baru untuk projek PHPixie anda dan masuk ke folder tersebut:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Cipta projek PHPixie guna Composer: Jalankan perintah Composer di dalam direktori projek untuk mendapatkan templat projek PHPixie:bashComposer akan memuat turun PHPixie beserta keperluan pakejnya ke dalam direktori ini.
composer create-project phpixie/project .
1
Konfigurasi Pelayan Web
Gunakan fungsi Laman Web (Websites) ServBay untuk menetapkan pelayan web Caddy supaya boleh menjalankan projek PHPixie anda dengan betul.
Buka antara muka aplikasi ServBay.
Navigasi ke senarai Laman Web (Websites).
Klik tambah laman web baru.
Isi maklumat konfigurasi laman web:
- Nama: Contohnya
My First PHPixie Dev Site
(hanya penanda dalaman dalam ServBay). - Domain: Contohnya
servbay-phpixie-test.local
(alamat pembangunan tempatan yang digunakan pada pelayar). - Jenis Laman Web: Pilih
PHP
. - Versi PHP: Pilih versi PHP yang dikehendaki, misalnya
8.3
. - Akar Direktori Laman Web (Document Root): Halakan ke folder
web
projek anda:/Applications/ServBay/www/servbay-phpixie-app/web
.
Kenapa direktori
/web
?Fail masuk utama untuk projek PHPixie terletak di
web/index.php
. Untuk keselamatan dan amalan terbaik, akar dokumen pelayan web perlu terus menunjuk pada folderweb
yang mengandungi fail masuk ini, dan bukan direktori peringkat atas projek. Ini menghalang capaian langsung melalui web ke fail sensitif projek (seperti fail konfigurasi atau direktori vendor).- Nama: Contohnya
Simpan konfigurasi. ServBay akan mengkonfigurasi Caddy secara automatik serta mengemaskini fail hosts tempatan anda (jika perlu), supaya domain
servbay-phpixie-test.local
menunjuk ke pelayan ServBay tempatan.
Untuk panduan terperinci, sila rujuk Menambah Laman Web Pertama.
Menambah Kod Contoh
Bagi mengesahkan projek berjalan dengan betul dan mendemonstrasi integrasi pangkalan data dan cache, kita akan menambah beberapa contoh kod dalam projek.
Cipta pengawal contoh: Tambahkan kod berikut dalam fail
src/App/HTTP/Controller/Home.php
. Jika fail atau direktori belum wujud, sila cipta secara manual.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Import kelas Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Tindakan (action) laman utama secara lalai public function action_index(Request $request) { // Render templat assets/templates/app/home.php return $this->template->render('app:home'); } // Tindakan contoh Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached dari ServBay!', 60); // Simpan data, sah selama 60 saat $value = $cache->get('key'); // Dapatkan data return $this->response()->string($value); // Balikkan respon berbentuk string } // Tindakan contoh Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis dari ServBay!'); // Simpan data $value = $redis->get('key'); // Dapatkan data return $this->response()->string($value); // Balikkan respon berbentuk string } // Tindakan tambah pengguna (MySQL/PostgreSQL) public function action_add_user(Request $request) { // Dapatkan query builder dari komponen pangkalan data $query = $this->components->database()->query(); // Masukkan data pengguna baru ke dalam jadual 'users' $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // Emel unik ])->execute(); // Jalankan operasi kemasukan return $this->response()->string('User berjaya ditambah.'); // Balikkan mesej kejayaan } // Tindakan senaraikan pengguna (MySQL/PostgreSQL) public function action_list_users(Request $request) { // Dapatkan query builder dari komponen pangkalan data $query = $this->components->database()->query(); // Cari semua pengguna dalam jadual 'users' $users = $query->select('*')->from('users')->execute()->fetchAll(); // Jalankan kueri dan dapatkan semua hasil return $this->response()->json($users); // Balikkan senarai pengguna dalam format JSON } }
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
67Cipta templat contoh: Tambahkan kod berikut dalam
assets/templates/app/home.php
. Jika fail atau direktori belum wujud, sila cipta secara manual.php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to PHPixie on ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Welcome to PHPixie on ServBay</h1> <p>Laman ini dihasilkan secara dinamik oleh aplikasi PHPixie anda yang berjalan di ServBay.</p> <h2>Pautan fungsi contoh:</h2> <ul> <li><a href="/home/memcached">Uji Memcached</a></li> <li><a href="/home/redis">Uji Redis</a></li> <li><a href="/home/add_user">Tambah pengguna ke pangkalan data</a></li> <li><a href="/home/list_users">Senaraikan pengguna dalam pangkalan data</a></li> </ul> <p>Sila pastikan anda telah melengkapkan langkah konfigurasi pangkalan data dan cache berkaitan.</p> </body> </html>
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
Mengakses Laman Web Asas
Selepas melengkapkan konfigurasi laman web ServBay dan menambah kod sampel, anda boleh mengakses domain yang ditetapkan pada pelayar anda:
- Buka pelayar dan lawat
https://servbay-phpixie-test.local
. - Anda sepatutnya melihat halaman bertajuk "Welcome to PHPixie on ServBay" bersama beberapa pautan fungsi contoh.
Jika laman gagal diakses, sila semak:
- Adakah ServBay sedang berjalan?
- Adakah konfigurasi laman web dalam ServBay betul – terutama domain, jenis laman web, dan dokumen root?
- Adakah fail hosts tempatan anda menyelesaikan
servbay-phpixie-test.local
dengan betul (ServBay lazimnya akan uruskan perkara ini secara automatik)? - Adakah versi PHP yang dipilih telah diaktifkan dalam ServBay?
Contoh Integrasi Pangkalan Data dan Cache
PHPixie secara asli menyokong pelbagai sistem pangkalan data dan cache. ServBay membekalkan pakej MySQL, PostgreSQL, Redis, Memcached dan sebagainya, membolehkan anda mengintegrasi terus dengan projek PHPixie anda.
Perhatian Penting: Sebelum menjalankan operasi pangkalan data, pastikan servis pangkalan data berkaitan (seperti MySQL atau PostgreSQL) telah dihidupkan dalam ServBay, dan anda telah mencipta pangkalan data khusus projek anda. Sebagai contoh, pangkalan data yang digunakan dalam contoh ini dinamakan servbay_phpixie_app
. Anda boleh gunakan perisian pengurusan pangkalan data seperti Sequel Ace, Postico, TablePlus, atau klien terminal untuk menciptanya. Nama pengguna lalai ServBay lazimnya ialah root
manakala kata laluannya password
(sila sahkan dengan tetapan sebenar ServBay anda).
Konfigurasi Sambungan Pangkalan Data
Mengikut jenis pangkalan data yang digunakan (MySQL atau PostgreSQL), edit fail assets/config/database.php
di direktori akar projek anda. Alamat lalai pangkalan data pada ServBay biasa ialah 127.0.0.1
.
Contoh konfigurasi MySQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Ubah rentetan sambungan mengikut jenis dan konfigurasi pangkalan data anda
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Pengguna lalai ServBay
'password' => 'password', // Kata laluan lalai ServBay (ubah mengikut tetapan anda)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Contoh konfigurasi PostgreSQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Ubah rentetan sambungan mengikut jenis dan konfigurasi pangkalan data anda
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Pengguna lalai ServBay
'password' => 'password', // Kata laluan lalai ServBay (ubah mengikut tetapan anda)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Mencipta Jadual Pangkalan Data (Menggunakan Migrasi)
PHPixie menawarkan alat baris perintah untuk menguruskan migrasi pangkalan data – membolehkan anda mengawal versi struktur pangkalan data anda.
- Buka terminal: Tukar ke direktori akar projek PHPixie anda:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Cipta fail migrasi baru: Jalankan utiliti CLI PHPixie untuk menjana fail migrasi bagi mencipta jadual
users
:bashIni akan menjana fail PHP baru di bawah folderphp pixie generate:migration create_users_table
1assets/migrations
dengan nama yang mengandungi cap masa. - Edit fail migrasi: Buka fail migrasi baru tersebut (contoh
YYYY_MM_DD_HHMMSS_create_users_table.php
) dan edit kaedahup()
dandown()
untuk mentakrifkan struktur jadualusers
:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Guna pembina skema untuk cipta jadual 'users' $this->schema->create('users', function(Table $table) { $table->increments('id'); // Primary key autoincrement $table->string('name'); // Lajur nama $table->string('email')->unique(); // Lajur emel, unik $table->timestamps(); // Lajur timestamp created_at dan updated_at }); } public function down() { // Guna pembina skema untuk padam jadual 'users' $this->schema->drop('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - Jalankan migrasi: Dari terminal di direktori projek, jalankan perintah berikut untuk laksanakan migrasi dan cipta jadual
users
:bashJika berjaya, anda akan melihat petunjuk migrasi berjaya di terminal. Anda juga boleh mengesahkan jadualphp pixie migrate
1users
telah wujud di pangkalan dataservbay_phpixie_app
melalui perisian pengurusan pangkalan data.
Menggunakan Pangkalan Data Berorientasikan Relasi (MySQL/PostgreSQL)
Dalam contoh pengawal src/App/HTTP/Controller/Home.php
di atas, kita telah tambahkan kaedah action_add_user
dan action_list_users
untuk mendemonstrasi penggunaan komponen pangkalan data PHPixie dengan MySQL atau PostgreSQL.
- Tambah pengguna: Lawati
https://servbay-phpixie-test.local/home/add_user
untuk masukkan satu rekod pengguna baru ke jadualusers
. - Senarai pengguna: Lawati
https://servbay-phpixie-test.local/home/list_users
untuk mengambil semua pengguna daripada jadualusers
dan memaparkan hasil dalam format JSON.
Konfigurasi dan Penggunaan Pangkalan Data NoSQL (Memcached/Redis)
ServBay sedia memasang pakej Memcached dan Redis berserta sambungan PHP-nya. Anda cuma perlu buat konfigurasi berkaitan dalam projek PHPixie anda.
Konfigurasi Memcached (assets/config/cache.php
):
Edit atau cipta fail assets/config/cache.php
dan tambahkan konfigurasi berikut:
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Alamat lalai Memcached ServBay
'port' => 11211, // Port lalai Memcached ServBay
'weight' => 100,
],
],
],
];
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
Konfigurasi Redis (assets/config/redis.php
):
Edit atau cipta fail assets/config/redis.php
dan tambahkan konfigurasi berikut:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Alamat lalai Redis ServBay
'port' => 6379, // Port lalai Redis ServBay
'timeout' => 0,
'database' => 0, // Indeks pangkalan data Redis
],
];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Penggunaan Memcached/Redis:
Dalam pengawal contoh src/App/HTTP/Controller/Home.php
, dua kaedah action_memcached
dan action_redis
telah disediakan sebagai contoh penggunaan komponen cache PHPixie (penggunaan bawahannya bergantung pada konfigurasi anda - sama ada Memcached atau Redis).
- Uji Memcached: Lawati
https://servbay-phpixie-test.local/home/memcached
untuk menulis satu pasangan kunci-nilai ke Memcached dan membacanya semula. - Uji Redis: Lawati
https://servbay-phpixie-test.local/home/redis
untuk menulis satu pasangan kunci-nilai ke Redis dan membacanya semula.
Pastikan perkhidmatan berkaitan (Memcached dan Redis) telah dihidupkan dalam ServBay.
Rumusan
Dengan mengikuti langkah-langkah di atas, anda telah berjaya membina, mengkonfigurasi dan menjalankan projek PHPixie pada persekitaran tempatan macOS menggunakan ServBay. Anda telah mempelajari cara membina projek dengan Composer, mengkonfigurasi pelayan web dengan fungsi Laman Web ServBay, melakukan integrasi asas pangkalan data dan cache, serta mengesahkan fungsi tersebut.
Persekitaran bersepadu yang ditawarkan oleh ServBay memudahkan proses pemasangan persekitaran pembangunan PHP, membolehkan anda lebih fokus pada pembangunan kod sebenar. Semoga panduan ini membantu anda memulakan projek web anda yang seterusnya menggunakan PHPixie dengan lebih pantas dan mudah!