Membuat dan Menjalankan Proyek ThinkPHP 8 di ServBay
Dokumen ini akan memandu Anda untuk memanfaatkan ServBay sebagai lingkungan pengembangan web lokal yang handal, demi membuat, mengatur, dan menjalankan proyek PHP berbasis framework ThinkPHP 8 dengan cepat. ServBay hadir dengan lingkungan PHP yang sudah dikonfigurasi, server web (Caddy atau Nginx), serta berbagai layanan database, sehingga mempercepat proses setup proyek ThinkPHP Anda di komputer lokal.
Apa Itu ThinkPHP?
ThinkPHP merupakan framework PHP open-source asal Tiongkok, fokus pada pengembangan berbasis objek yang cepat, sederhana, dan efisien. Framework ini mengedepankan prinsip pengembangan yang ringkas dan performa tinggi, menyediakan alat bantu bagi developer untuk membangun aplikasi web modern. Popularitas ThinkPHP sangat tinggi di komunitas PHP Tiongkok berkat kemudahan penggunaan, fitur kaya (ORM canggih, routing fleksibel, template engine bawaan, dukungan cache, dsb), dan komunitas yang aktif.
Fitur Utama dan Keunggulan ThinkPHP
- Ringkas & Efisien: Struktur framework rapi, kode mudah dipahami dan dirawat—meningkatkan efisiensi pengembangan.
- Fitur Lengkap: Sudah include komponen penting seperti arsitektur MVC, ORM, template engine, cache, manajemen sesi, otentikasi, token formulir, dan lainnya.
- ORM Kuat: Menyederhanakan operasi database dengan pemetaan relasional objek yang intuitif.
- Routing Fleksibel: Mendukung berbagai mekanisme penentuan route, memungkinkan pengelolaan URL kompleks.
- Ekosistem Luas: Banyak ekstensi, plugin, dan didukung komunitas developer aktif—resource melimpah.
- Rilis Aktif: Selalu update mengikuti evolusi PHP dan tren pengembangan web terbaru.
ThinkPHP cocok untuk kebutuhan pengembangan web dari proyek kecil hingga enterprise berskala besar.
Menyiapkan Proyek ThinkPHP 8 di ServBay
ServBay ideal sebagai lingkungan pengembangan proyek ThinkPHP 8 dengan fitur:
- Tersedia berbagai versi PHP dan ekstensi umum.
- Server Web Caddy atau Nginx bawaan, memudahkan konfigurasi situs.
- Terintegrasi MySQL, PostgreSQL, MongoDB, Redis, Memcached, dsb.
- Manajemen dependency Composer sudah terinstall.
Panduan ini memanfaatkan fitur-fitur ServBay untuk membantu pembuatan proyek ThinkPHP 8 Anda dengan cepat.
Persyaratan Dasar
Sebelum mulai, pastikan Anda telah:
- Mengunduh dan menginstal ServBay di macOS atau Windows.
- ServBay berjalan, versi PHP yang diperlukan (ThinkPHP 8 membutuhkan PHP 8.0 atau lebih tinggi), serta layanan database (MySQL, PostgreSQL, Redis, Memcached, dsb) sudah diaktifkan melalui tab “Packages” pada ServBay Control Panel.
Membuat Proyek ThinkPHP
ServBay menyarankan file website lokal ditempatkan di direktori /Applications/ServBay/www
agar memudahkan manajemen proyek.
Pastikan Composer Sudah Terinstal
Composer telah terpasang secara otomatis saat menginstall ServBay, sehingga Anda tak perlu install manual. Konfirmasi dengan jalankan
composer --version
di terminal ServBay.Buat Proyek ThinkPHP dengan Composer
Buka terminal macOS dan jalankan perintah berikut pada direktori root ServBay untuk membuat proyek ThinkPHP 8 baru:
bashcd /Applications/ServBay/www composer create-project topthink/think servbay-thinkphp-app
1
2Perintah di atas akan membuat folder
servbay-thinkphp-app
di/Applications/ServBay/www
serta mendownload file inti ThinkPHP 8 beserta dependensinya.Masuk ke Direktori Proyek
Setelah selesai, masuk ke direktori proyek:
bashcd /Applications/ServBay/www/servbay-thinkphp-app
1
Inisialisasi Konfigurasi Proyek
Setelah proyek dibuat, lakukan beberapa konfigurasi dasar.
Konfigurasi Database
Biasanya pengaturan database di ThinkPHP terletak pada file
config/database.php
. Edit sesuai database yang digunakan di ServBay.Berikut contoh konfigurasi untuk layanan MySQL default ServBay:
php<?php // config/database.php return [ // Konfigurasi koneksi database default 'default' => env('database.driver', 'mysql'), // Konfigurasi masing-masing koneksi database 'connections' => [ 'mysql' => [ // Jenis database 'type' => 'mysql', // Alamat server 'hostname' => env('database.hostname', '127.0.0.1'), // Nama database 'database' => env('database.database', 'servbay_thinkphp_app'), // Disarankan buat database khusus proyek // Username 'username' => env('database.username', 'root'), // Password 'password' => env('database.password', 'password'), // Password default ServBay, hanya untuk development lokal! // Port 'hostport' => env('database.hostport', '3306'), // ... konfigurasi lain ... ], // ... koneksi database lain ... ], ];
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
27Catatan Penting:
- Ubah nilai
database
sesuai nama database yang Anda buat (misal via phpMyAdmin atau Adminer pada ServBay). - Password default user
root
di ServBay adalahpassword
. Password ini hanya untuk development lokal, jangan gunakan di server produksi! Di lingkungan produksi, selalu gunakan password kuat dan buat user dengan hak akses minimum. - Jika Anda menggunakan
.env
untuk environment variable, pastikan nilainya override nilai default diconfig/database.php
.
- Ubah nilai
Konfigurasi Server Web
File entry ThinkPHP adalah public/index.php
dan memerlukan aturan URL Rewrite khusus untuk routing. Diferensiasi routing ThinkPHP dari file statis butuh aturan Rewrite bawaan ServBay.
Pada laman setting website, pilih aturan Rewrite dari daftar drop-down lalu pilih ThinkPHP
, kemudian klik simpan.
Detail langkah konfigurasi website ServBay bisa dilihat di Menambahkan Website Pertama.
Menambahkan Kode Contoh
Untuk pengujian konfigurasi serta fitur routing dasar ThinkPHP, tambahkan route dan controller sederhana:
Edit file /Applications/ServBay/www/servbay-thinkphp-app/route/app.php
, tambahkan kode berikut untuk mendefinisikan route GET:
php
<?php
// route/app.php
use think\facade\Route;
// Mendefinisikan route servbay untuk akses /servbay mengeksekusi fungsi anonimus
Route::get('servbay', function () {
return 'Hello ServBay!';
});
// ... route lain ...
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Mengakses Website
Setelah seluruh tahapan di atas, buka browser dan kunjungi URL sesuai domain lokal dan route contoh:
https://thinkphp.servbay.demo/servbay
Jika konfigurasi telah benar, Anda akan melihat output Hello ServBay!
pada browser. Artinya proyek ThinkPHP 8 telah berjalan baik di lingkungan ServBay, termasuk pengaturan server web dan PHP-FPM.
Contoh Database NoSQL
ServBay menyediakan banyak database NoSQL seperti Memcached dan Redis. ThinkPHP memiliki layer abstraksi cache yang memudahkan integrasi layanan NoSQL ini sebagai penanganan cache.
Contoh Memcached
Instal Ekstensi Memcached
Ekstensi Memcached sudah terinstall pada PHP ServBay, cukup pastikan layanan Memcached aktif via Control Panel.
Konfigurasikan Cache Memcached
Edit file
config/cache.php
dan atur driver Memcached:php<?php // config/cache.php return [ // Driver cache default 'default' => env('cache.driver', 'memcached'), // Konfigurasi koneksi cache 'stores' => [ 'memcached' => [ // Tipe cache 'type' => 'memcached', // Daftar server 'host' => '127.0.0.1', // Alamat default Memcached ServBay 'port' => 11211, // Port default Memcached 'persistent' => false, 'expire' => 0, 'timeout' => 0, 'prefix' => '', ], // ... pengaturan cache lain ... ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Pemakaian Cache Memcached di Kode
Di controller atau callback route, gunakan
Cache
Facade ThinkPHP untuk operasi Memcached:php<?php use think\facade\Cache; use think\facade\Route; Route::get('/memcached-example', function () { // Set cache dengan durasi 600 detik Cache::set('my_memcached_key', 'This value is from Memcached!', 600); // Ambil cache $value = Cache::get('my_memcached_key'); return 'Value from Memcached: ' . $value; });
1
2
3
4
5
6
7
8
9
10
11
12
13Test dengan mengakses
https://thinkphp.servbay.demo/memcached-example
.
Contoh Redis
Instal Ekstensi Redis
Ekstensi Redis sudah tersedia di ServBay, aktifkan layanan via Control Panel.
Konfigurasikan Cache Redis
Update
config/cache.php
untuk memakai Redis sebagai driver cache:php<?php // config/cache.php return [ // Driver cache default 'default' => env('cache.driver', 'redis'), // Konfigurasi koneksi cache 'stores' => [ 'redis' => [ // Tipe cache 'type' => 'redis', // Alamat server 'host' => env('cache.host', '127.0.0.1'), // Alamat default Redis ServBay // Port 'port' => env('cache.port', 6379), // Port default Redis // Password (Redis ServBay default tanpa password) 'password' => env('cache.password', ''), 'select' => 0, 'timeout' => 0, 'expire' => 0, 'persistent' => false, 'prefix' => '', ], // ... pengaturan cache lain ... ], ];
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
27Catatan: Redis ServBay default tidak memakai password. Namun jika Anda mengatur password manual, update field
password
sesuai dengan setting Anda.Pemakaian Cache Redis di Kode
Gunakan
Cache
Facade dalam controller atau route untuk operasi Redis:php<?php use think\facade\Cache; use think\facade\Route; Route::get('/redis-example', function () { // Set cache tanpa batas waktu (atau isi parameter ketiga untuk durasi) Cache::set('my_redis_key', 'Hello from Redis!'); // Ambil cache $value = Cache::get('my_redis_key'); return 'Value from Redis: ' . $value; });
1
2
3
4
5
6
7
8
9
10
11
12
13Test dengan mengunjungi
https://thinkphp.servbay.demo/redis-example
.
Contoh Database Relasional
ServBay terintegrasi database populer seperti MySQL dan PostgreSQL. ORM ThinkPHP memudahkan interaksi dengan berbagai database relasional.
Menggunakan Alat Migrasi Database ThinkPHP
Database Migration Tool di ThinkPHP membantu pengelolaan perubahan struktur database serta memudahkan kolaborasi tim.
Instal Tool Migrasi
Jalankan perintah Composer dari direktori root proyek untuk menginstall extension migrasi:
bashcd /Applications/ServBay/www/servbay-thinkphp-app composer require topthink/think-migration
1
2Buat File Migrasi Baru
Buat file migrasi untuk tabel
users
:bashphp think migrate:create CreateUserTable
1Hasilnya adalah file PHP baru di
database/migrations
dengan nama sesuai timestamp dan nama migrasi Anda (misal20231027100000_create_user_table.php
).Edit File Migrasi
Edit file hasil migrasi, khususnya fungsi
up()
untuk skema tabelusers
:php<?php // database/migrations/YYYYMMDDHHMMSS_create_user_table.php use think\migration\Migrator; use think\migration\db\Column; class CreateUserTable extends Migrator { /** * Change Method. * * Tulis migrasi reversibel Anda di sini. * * Informasi lebih detail: http://docs.phinx.org/en/latest/migrations.html#the-change-method * * Perintah berikut akan otomatis reversed saat migrasi rollback: * * createTable, renameTable, addColumn, addCustomColumn, renameColumn, addIndex, addForeignKey, * createDatabase, renameDatabase, dropTable, dropColumn, dropIndex, dropForeignKey */ public function change() { // Membuat tabel $table = $this->table('users'); $table->addColumn('name', 'string', ['limit' => 50, 'comment' => 'Nama pengguna']) ->addColumn('email', 'string', ['limit' => 100, 'comment' => 'Alamat email']) ->addIndex(['email'], ['unique' => true]) // Unik index ->addTimestamps() // Kolom created_at & updated_at ->create(); } // Alternatif: buat fungsi up() dan down() secara terpisah /* public function up() { $table = $this->table('users'); $table->addColumn('name', 'string', ['limit' => 50, 'comment' => 'Nama pengguna']) ->addColumn('email', 'string', ['limit' => 100, 'comment' => 'Alamat email']) ->addIndex(['email'], ['unique' => true]) ->addTimestamps() ->create(); } public function down() { $this->dropTable('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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49Jalankan Migrasi Database
Dari terminal ServBay, pastikan berada di root proyek lalu jalankan migrasi untuk membuat tabel:
bashphp think migrate:run
1Jika sukses, tabel
users
akan muncul di database.
Contoh MySQL
Pastikan layanan MySQL ServBay sudah aktif dan konfigurasi di config/database.php
sudah benar.
Konfigurasi Koneksi MySQL
Ikuti contoh konfigurasi MySQL di bagian “Inisialisasi Proyek”. Pastikan isian pada
config/database.php
telah sesuai.Menambah Data User dalam Kode
Gunakan
Db
Facade atau model ORM ThinkPHP untuk menyisipkan data:php<?php use think\facade\Db; use think\facade\Route; Route::get('/mysql-add-user', function () { try { Db::table('users')->insert([ 'name' => 'ServBay Demo User', 'email' => 'demo@servbay.demo', // Email sample brand ServBay 'created_at' => date('Y-m-d H:i:s'), // Manual timestamp jika addTimestamps() belum otomatis 'updated_at' => date('Y-m-d H:i:s'), ]); return 'User added successfully!'; } catch (\Exception $e) { return 'Error adding user: ' . $e->getMessage(); } });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Akses
https://thinkphp.servbay.demo/mysql-add-user
untuk mengetes penambahan data.Membaca Data User dalam Kode
Query data menggunakan
Db
Facade atau model:php<?php use think\facade\Db; use think\facade\Route; Route::get('/mysql-users', function () { $users = Db::table('users')->select(); // Ambil seluruh user return json($users); // Kembalikan dalam format JSON });
1
2
3
4
5
6
7
8Kunjungi
https://thinkphp.servbay.demo/mysql-users
untuk melihat isi tabelusers
.
Contoh PostgreSQL
Pastikan layanan PostgreSQL ServBay telah aktif dan pengaturan di config/database.php
sudah benar.
Konfigurasi Koneksi PostgreSQL
Pastikan pada file
config/database.php
terdapat konfigurasi berikut:php<?php // config/database.php (cuplikan) return [ // ... konfigurasi lain ... 'connections' => [ // ... MySQL ... 'pgsql' => [ // Jenis database 'type' => 'pgsql', // Alamat server 'hostname' => env('database.hostname', '127.0.0.1'), // Nama database 'database' => env('database.database', 'servbay_thinkphp_app'), // Disarankan buat database khusus // Username 'username' => env('database.username', 'root'), // Password 'password' => env('database.password', 'password'), // Password default ServBay, hanya untuk dev! // Port 'hostport' => env('database.hostport', '5432'), // Port default PostgreSQL // ... setelan lain ... ], // ... koneksi database lain ... ], ];
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
27Catatan Penting:
- Seperti halnya MySQL, buat database PostgreSQL khusus untuk proyek Anda.
- Password default user
root
ServBay untuk PostgreSQL adalahpassword
. Hanya dipakai di lokal.
Menambah Data User dalam Kode
Pakai
Db
Facade atau ORM, kali ini dengan koneksipgsql
:php<?php use think\facade\Db; use think\facade\Route; Route::get('/pgsql-add-user', function () { try { Db::connect('pgsql')->table('users')->insert([ // Gunakan koneksi pgsql 'name' => 'ServBay PgSQL User', 'email' => 'pgsql-demo@servbay.demo', 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ]); return 'PostgreSQL User added successfully!'; } catch (\Exception $e) { return 'Error adding PostgreSQL user: ' . $e->getMessage(); } });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Kunjungi
https://thinkphp.servbay.demo/pgsql-add-user
untuk testing.Membaca Data User dalam Kode
Query data lewat koneksi
pgsql
:php<?php use think\facade\Db; use think\facade\Route; Route::get('/pgsql-users', function () { $users = Db::connect('pgsql')->table('users')->select(); // Ambil data pakai pgsql return json($users); // Format JSON });
1
2
3
4
5
6
7
8Cek data dengan mengunjungi
https://thinkphp.servbay.demo/pgsql-users
.
Kesimpulan
Dengan langkah-langkah di atas, Anda telah sukses membuat, mengatur, dan menjalankan proyek ThinkPHP 8 menggunakan lingkungan pengembangan lokal ServBay. Anda telah mempelajari cara set up Composer, mengkonfigurasi server web Caddy untuk routing framework ThinkPHP, serta menghubungkan dan memakai database MySQL, PostgreSQL, Memcached, dan Redis buatan ServBay.
ServBay sangat membantu proses setup lingkungan pengembangan framework PHP seperti ThinkPHP, sehingga Anda bisa lebih fokus mengerjakan logika bisnis dan fitur aplikasi. Silakan lanjutkan pengembangan aplikasi ThinkPHP Anda dan maksimalkan fitur serta paket software yang tersedia di ServBay.