Membuat dan Menjalankan Proyek PHPixie di macOS dengan ServBay
PHPixie adalah framework PHP yang ringan dan berkinerja tinggi, dirancang khusus untuk pengembangan aplikasi web secara cepat. Framework ini mengikuti pola desain HMVC (Hierarchical Model-View-Controller), menawarkan struktur kode yang rapi serta kemampuan pemrosesan yang efisien. Berkat kesederhanaannya, fleksibilitas, dan performa tinggi, PHPixie digemari banyak developer.
Fitur Utama dan Keunggulan PHPixie
- Ringan: Sistem inti PHPixie sangat ramping, hanya berisi komponen yang benar-benar dibutuhkan untuk membangun aplikasi, sehingga proses startup dan eksekusinya sangat cepat.
- Performa tinggi: Framework ini dirancang untuk efisiensi dan mampu menangani permintaan secara konkuren dengan baik, cocok untuk aplikasi yang menuntut kinerja optimal.
- Mudah dipelajari: Menyediakan API yang jelas, sederhana, dan dokumentasi yang lengkap sehingga developer dapat menguasainya dengan cepat.
- Fleksibel: Struktur framework-nya bersifat loosely coupled, memungkinkan developer bebas memilih dan mengintegrasikan library atau komponen pihak ketiga sesuai kebutuhan proyek.
- Komunitas aktif: Didukung oleh komunitas developer yang dinamis, menawarkan berbagai ekstensi pihak ketiga dan sumber daya dukungan.
PHPixie membantu developer membangun aplikasi web yang berkualitas dan berperforma tinggi, cocok digunakan baik untuk proyek kecil hingga aplikasi enterprise berskala besar.
Membuat dan Menjalankan Proyek PHPixie dengan ServBay
Panduan ini akan membantu Anda membuat dan menjalankan proyek PHPixie secara lokal dengan ServBay. Kita akan menggunakan lingkungan PHP terpadu di ServBay, Composer untuk manajemen dependensi, serta fitur “Websites” untuk mengonfigurasi server web dan mengintegrasikan database serta cache.
Prasyarat
- ServBay sudah terinstal dan berjalan di macOS. ServBay telah terintegrasi dengan PHP, Composer, berbagai database (MySQL, PostgreSQL, MongoDB, Redis, dsb), serta server web Caddy.
- Memahami dasar penggunaan perintah terminal.
Membuat Proyek PHPixie
Rekomendasi lokasi penyimpanan website
ServBay merekomendasikan Anda untuk menyimpan semua proyek website lokal di direktori /Applications/ServBay/www
guna memudahkan pengelolaan dan pengaturan akses dari ServBay.
- Pastikan Composer sudah terpasang: ServBay sudah dibekali Composer dari awal, jadi Anda tidak perlu melakukan instalasi tambahan. Verifikasi dengan membuka terminal dan mengetik
composer --version
. - Buat direktori proyek: Pada direktori root website yang direkomendasikan ServBay, buat folder baru untuk proyek PHPixie Anda, lalu masuk ke dalam folder tersebut:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Buat proyek PHPixie menggunakan Composer: Jalankan perintah Composer di direktori proyek untuk mengambil template proyek PHPixie:bashComposer akan mendownload PHPixie beserta seluruh dependensinya ke dalam folder tersebut.
composer create-project phpixie/project .
1
Konfigurasi Server Web
Gunakan fitur Websites di ServBay untuk mengatur server web Caddy agar dapat menjalankan dan mengarahkan website ke proyek PHPixie Anda.
Buka antarmuka aplikasi ServBay.
Navigasikan ke daftar Websites.
Klik untuk menambah website baru.
Isi detail konfigurasi website:
- Nama: Misal
My First PHPixie Dev Site
(hanya sebagai identitas di ServBay). - Domain: Misal
servbay-phpixie-test.local
(domain pengembangan yang akan diakses di browser). - Tipe Website: Pilih
PHP
. - Versi PHP: Pilih versi PHP yang diinginkan (misal
8.3
). - Document Root: Arahkan ke folder
web
di proyek Anda:/Applications/ServBay/www/servbay-phpixie-app/web
.
Kenapa direktori
/web
?File entry point proyek PHPixie berada di
web/index.php
. Untuk alasan keamanan dan sesuai best practice, root server web sebaiknya langsung mengarah ke folderweb
yang berisi file entry point, bukan ke root proyek. Hal ini mencegah akses langsung ke file sensitif proyek seperti file konfigurasi ataupun direktori vendor lewat web.- Nama: Misal
Simpan konfigurasi. ServBay akan secara otomatis mengatur Caddy dan memperbarui file hosts lokal Anda (jika dibutuhkan), sehingga domain
servbay-phpixie-test.local
mengarah langsung ke server ServBay lokal Anda.
Langkah detail dapat dilihat pada Menambahkan Website Pertama.
Menambahkan Kode Contoh
Untuk memastikan proyek sudah berjalan dengan baik serta mendemonstrasikan integrasi database dan cache, Anda bisa menambahkan kode contoh berikut ke dalam proyek.
Buat Controller Contoh: Tambahkan kode berikut ke
src/App/HTTP/Controller/Home.php
. Jika folder/file belum ada, silakan buat secara manual.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Mengimpor kelas Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // action untuk halaman awal (index) default public function action_index(Request $request) { // Render template assets/templates/app/home.php return $this->template->render('app:home'); } // action contoh penggunaan Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // Simpan data, berlaku selama 60 detik $value = $cache->get('key'); // Ambil data return $this->response()->string($value); // Respon berupa string } // action contoh penggunaan Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // Simpan data $value = $redis->get('key'); // Ambil data return $this->response()->string($value); // Respon berupa string } // action contoh menambah user ke MySQL/PostgreSQL public function action_add_user(Request $request) { // Mendapatkan query builder dari komponen database $query = $this->components->database()->query(); // Menambahkan data user baru ke tabel 'users' $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // Email unik ])->execute(); // Eksekusi insert return $this->response()->string('User added successfully.'); // Pesan sukses } // action contoh mengambil daftar user dari MySQL/PostgreSQL public function action_list_users(Request $request) { // Mendapatkan query builder dari komponen database $query = $this->components->database()->query(); // Ambil semua data user dari tabel 'users' $users = $query->select('*')->from('users')->execute()->fetchAll(); // Jalankan query dan ambil hasil return $this->response()->json($users); // Respon berupa daftar user 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
67Buat Template Contoh: Tambahkan kode berikut ke
assets/templates/app/home.php
. Jika folder/file belum ada, silakan buat 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>Halaman ini di-generate secara dinamis oleh aplikasi PHPixie Anda yang berjalan menggunakan ServBay.</p> <h2>Link fitur 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 User ke Database</a></li> <li><a href="/home/list_users">Daftar User dalam Database</a></li> </ul> <p>Pastikan Anda sudah melakukan konfigurasi yang diperlukan untuk database dan cache.</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 Website
Setelah konfigurasi website di ServBay dan penambahan kode contoh selesai, Anda bisa mengakses domain yang telah diatur lewat browser:
- Buka browser dan kunjungi
https://servbay-phpixie-test.local
. - Anda akan melihat halaman bertuliskan "Welcome to PHPixie on ServBay" serta beberapa link untuk fitur contoh.
Jika website tidak dapat diakses, periksa:
- Apakah ServBay sedang berjalan?
- Apakah konfigurasi website di ServBay sudah benar, terutama domain, tipe website, dan root direktori?
- Apakah file hosts lokal sudah mengarahkan domain
servbay-phpixie-test.local
dengan benar (ServBay biasanya mengatur otomatis)? - Apakah versi PHP yang diaktifkan di ServBay sudah sesuai?
Contoh Integrasi Database dan Cache
PHPixie mendukung berbagai sistem database dan cache. ServBay menyediakan paket MySQL, PostgreSQL, Redis, Memcached, dll, sehingga Anda dapat mengintegrasikannya dengan mudah ke proyek PHPixie Anda.
Catatan penting: Sebelum melakukan operasi database, pastikan layanan database yang digunakan (misalnya MySQL atau PostgreSQL) sudah aktif di ServBay dan Anda sudah membuat database untuk proyek. Pada contoh ini, database yang digunakan bernama servbay_phpixie_app
. Anda dapat membuat database menggunakan alat manajemen database seperti Sequel Ace, Postico, TablePlus, atau via terminal. Default username database ServBay biasanya root
dengan password password
(cek pengaturan ServBay Anda).
Konfigurasi Koneksi Database
Sesuai jenis database yang Anda gunakan (MySQL atau PostgreSQL), edit file assets/config/database.php
di root proyek. Alamat default database ServBay biasanya 127.0.0.1
.
Contoh konfigurasi MySQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Connection string disesuaikan dengan tipe database dan konfigurasi ServBay Anda
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // User default ServBay
'password' => 'password', // Password default ServBay (sesuaikan sesuai pengaturan 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',
// Connection string disesuaikan dengan tipe database dan konfigurasi ServBay Anda
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // User default ServBay
'password' => 'password', // Password default ServBay (sesuaikan sesuai pengaturan 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
Membuat Tabel Database (Dengan Migrasi)
PHPixie menyediakan alat CLI untuk manajemen migrasi database, yang digunakan untuk versioning struktur database.
- Buka terminal: Pindah ke direktori root proyek PHPixie Anda:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Buat file migrasi: Jalankan CLI PHPixie untuk membuat file migrasi baru. Kita akan membuat migrasi untuk tabel
users
:bashPerintah ini akan membuat file PHP migrasi baru di direktoriphp pixie generate:migration create_users_table
1assets/migrations
dengan nama berisikan timestamp. - Edit file migrasi: Buka file migrasi terbaru di direktori
assets/migrations
(misalYYYY_MM_DD_HHMMSS_create_users_table.php
), lalu edit metodeup()
dandown()
untuk mendefinisikan struktur tabelusers
:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Membuat tabel 'users' dengan schema builder $this->schema->create('users', function(Table $table) { $table->increments('id'); // Primary key auto-increment $table->string('name'); // Kolom nama $table->string('email')->unique(); // Kolom email, unik $table->timestamps(); // Kolom created_at dan updated_at (timestamp) }); } public function down() { // Menghapus tabel '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: Di terminal pada folder root proyek, jalankan perintah migrasi:bashJika berhasil, terminal akan menampilkan pesan sukses migrasi. Anda juga bisa memverifikasi keberadaan tabel
php pixie migrate
1users
di databaseservbay_phpixie_app
menggunakan alat manajemen database.
Menggunakan Database Relasional (MySQL/PostgreSQL)
Contoh controller pada src/App/HTTP/Controller/Home.php
sudah memiliki metode action_add_user
dan action_list_users
untuk membuktikan cara interaksi antara PHPixie dan database relasional seperti MySQL atau PostgreSQL.
- Menambah user: Kunjungi
https://servbay-phpixie-test.local/home/add_user
untuk memasukkan data user baru ke tabelusers
. - Daftar user: Kunjungi
https://servbay-phpixie-test.local/home/list_users
untuk mengambil semua data user dari tabel dan menampilkannya dalam format JSON.
Konfigurasi dan Penggunaan Database NoSQL (Memcached/Redis)
ServBay telah menyiapkan paket Memcached dan Redis beserta ekstensi PHP terkait. Anda cukup melakukan konfigurasi berikut di proyek PHPixie Anda.
Konfigurasi Memcached (assets/config/cache.php
):
Edit/buat file assets/config/cache.php
untuk menambahkan konfigurasi Memcached:
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Alamat default Memcached ServBay
'port' => 11211, // Port default 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/buat file assets/config/redis.php
untuk menambahkan konfigurasi Redis:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Alamat default Redis ServBay
'port' => 6379, // Port default Redis ServBay
'timeout' => 0,
'database' => 0, // Indeks database Redis
],
];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Menggunakan Memcached/Redis:
Controller contoh yang sudah dibuat di atas (src/App/HTTP/Controller/Home.php
) telah memiliki metode action_memcached
dan action_redis
untuk membuktikan pemanfaatan cache PHPixie (basis backend dapat diubah ke Memcached atau Redis melalui konfigurasi).
- Uji Memcached: Kunjungi
https://servbay-phpixie-test.local/home/memcached
untuk menulis lalu membaca key-value pada Memcached. - Uji Redis: Kunjungi
https://servbay-phpixie-test.local/home/redis
untuk menulis lalu membaca key-value pada Redis.
Pastikan Memcached dan Redis di ServBay sudah dalam keadaan aktif.
Kesimpulan
Dengan langkah-langkah di atas, Anda telah berhasil menciptakan, mengonfigurasi, dan menjalankan proyek PHPixie secara lokal di macOS menggunakan ServBay. Anda telah mempelajari cara membuat proyek via Composer, mengonfigurasi web server dengan fitur Websites di ServBay, melakukan integrasi database dan cache, serta mencoba beberapa fitur dasar.
Lingkungan ServBay yang terintegrasi memudahkan dan mempercepat proses setup pengembangan PHP, sehingga Anda bisa lebih fokus pada penulisan kode dan pengembangan. Semoga panduan ini membantu Anda memulai proyek web berikutnya dengan PHPixie!