PHP × Ekosistem Developer Tiongkok
Apa Itu ThinkPHP? Framework PHP dari China
Bagaimana jika rekan kerja asal China belum mengenal Laravel? Berangkat dari pengalaman saya sendiri, mari bedah ThinkPHP dan Laravel lewat kode, perilaku database, dan kebutuhan proyek yang sama.
01 / PHP FRAMEWORK
Framework memberi struktur pada aplikasi PHP
ThinkPHP adalah framework web PHP sumber terbuka dari ekosistem TOPThink yang menggunakan lisensi Apache 2.0. Framework ini menyediakan pola kerja dan perangkat untuk menerima request HTTP, menata kode aplikasi, serta menghasilkan response. Jadi, kamu tidak perlu merangkai semua kebutuhan dasar aplikasi dari awal untuk setiap halaman.
Posisinya berada di sisi server, dalam kategori yang sama dengan Laravel. Vue menangani antarmuka di browser, sedangkan ThinkPHP bisa menyediakan API JSON yang dibaca antarmuka tersebut.
- Framework backend
- PHP + Composer
- Halaman HTML atau API JSON
02 / CATATAN DARI PENGALAMAN SAYA
Saya bertanya tentang Laravel. Rekan kerja asal China belum mengenalnya.
Itu pengalaman saya ketika berbicara langsung dengan seseorang yang bekerja bersama saya. Perbedaan lingkungan teknologi terasa nyata: framework yang akrab di satu lingkungan bisa belum dikenal di lingkungan lain.
Yang saya alami
Rekan kerja asal China yang saya tanyai belum mengenal framework Laravel.
Yang juga bisa diperiksa
Laravel China menyediakan dokumentasi Mandarin dan diskusi komunitas. Keberadaan komunitasnya dapat dilihat; tingkat familiaritas seluruh developer di China memerlukan data tersendiri.
Jelajahi Laravel China ↗Mulai percakapan dari proyek, perangkat, dan bahasa kerja tim yang sebenarnya. Dari sana, kebutuhan belajar framework menjadi lebih jelas.
03 / TOOLBOX
Enam bagian yang akan sering kamu temui
Routing
Route menghubungkan metode HTTP dan pola URL dengan kode aplikasi. Deklarasi route yang jelas membuat endpoint lebih mudah ditemukan, ditinjau, dan diuji daripada menebak file mana yang menangani request.
Controller
Controller mengatur jalannya request: membaca input yang sudah divalidasi, memanggil logika aplikasi, lalu mengembalikan response. Tanggung jawab yang terfokus membantu developer berikutnya memahami perubahan.
Data dan model
ThinkORM membantu pengolahan database melalui query dan model. Model dapat menata perilaku data, sedangkan aturan bisnis yang lebih besar bisa ditempatkan dalam service. Endpoint sapaan sederhana tidak membutuhkan database maupun ORM.
Middleware
Middleware menjalankan proses bersama di sekitar penanganan request. Contohnya pemeriksaan autentikasi atau pencatatan request, sehingga pemeriksaan yang sama tidak harus disalin ke setiap controller.
Validasi
Validasi menetapkan input yang diterima sebuah operasi. Periksa kelengkapan, format, dan panjang nilainya sebelum diproses. Memvalidasi input berbeda dengan memastikan pengguna berhak melakukan tindakan tersebut.
Composer dan ekstensi
Composer mengelola dependensi PHP. Template, antrean pekerjaan, dan integrasi lain bisa membutuhkan paket tambahan. Periksa isi proyek yang terpasang, jangan menganggap semua kemampuan selalu tersedia di inti framework.
04 / REQUEST → RESPONSE
Ikuti satu request, selangkah demi selangkah
Masukkan nama yang mudah dikenali, lalu telusuri endpoint sapaan ini. Perhatikan pembagian tugas setiap tahap agar framework tidak terasa seperti kotak ajaib yang sulit dijelaskan.
Route
URL cocok dengan route hello. Segmen name menjadi parameter untuk Learn/hello. Tugas route adalah memilih handler yang tepat, bukan membuat isi response secara langsung.
<?php
use think\facade\Route;
Route::get('hello/:name', 'Learn/hello');Simulasi belajar lokal. Tidak ada PHP yang dijalankan; nama tidak dikirim ke server dan tidak disimpan.
05 / FIRST ENDPOINT
Buat endpoint kecil yang benar-benar bisa diperiksa
Mulai di direktori belajar yang terpisah. Target awalnya adalah route yang berfungsi dan response yang dipahami, sebelum menambahkan database, login, atau panel admin.
Siapkan Composer dan versi PHP yang masih didukung serta cocok dengan dependensi proyek. Proyek ThinkPHP 8 mensyaratkan PHP 8.0 atau lebih baru, tetapi batas minimum bukan anjuran memakai versi PHP yang sudah tidak didukung.
Buat proyek terpisah
Pasang proyek resmi menggunakan Composer, masuk ke direktorinya, lalu jalankan server pengembangan yang terikat ke localhost. Ini latihan lokal; server pengembangan bukan layanan yang perlu dibuka ke internet untuk produksi.
composer create-project topthink/think thinkphp-demo cd thinkphp-demo php think run --host 127.0.0.1 --port 8000Deklarasikan route
Pada proyek belajar aplikasi tunggal yang baru dibuat ini, ganti isi contoh route/app.php dengan kode yang ditampilkan. Alternatifnya, tambahkan hanya baris route setelah import yang sudah ada; jangan menggandakan pembuka PHP atau deklarasi use. Segmen name diteruskan ke Learn/hello.
<?php use think\facade\Route; Route::get('hello/:name', 'Learn/hello');Tambahkan controller
Buat app/controller/Learn.php dengan namespace app\controller. Metodenya mengembalikan objek JSON kecil menggunakan nama yang diterima. Contoh ini tidak memerlukan kredensial database ataupun paket template tambahan.
<?php namespace app\controller; use app\BaseController; use think\response\Json; class Learn extends BaseController { public function hello(string $name = 'World'): Json { return json([ 'framework' => 'ThinkPHP', 'name' => $name, 'message' => 'Hello, ' . $name . '!', ]); } }Baca hasilnya, lalu ubah satu hal
Buka URL hello lokal dan coba nama lain. Bandingkan response asli dengan simulasi, kenali file yang terlibat, dan periksa dependensi menggunakan composer audit. Sebelum deploy, tinjau autentikasi, validasi, konfigurasi produksi, dan document root web server.
curl http://127.0.0.1:8000/hello/Julio composer audit
06 / THINKPHP × LARAVEL
ThinkPHP dan Laravel: bedanya terlihat saat menulis kode
Pilih topik untuk membandingkan konvensi, bawaan proyek, dan dampaknya pada aplikasi yang sama. Nama fitur yang mirip belum tentu membuat kodenya bisa saling ditukar.
Cakupan: ThinkPHP 8.x dan Laravel 13.x. Versi paket, starter kit, dan konfigurasi proyek dapat mengubah detailnya.
Jelajahi perbedaannyaApakah keduanya cocok dengan lingkungan PHP yang sama?
ThinkPHP 8.x
Proyek Composer dengan batas minimum PHP 8.0.
- Skeleton aplikasi dan inti framework merupakan paket terpisah dengan nomor versi berbeda.
- ThinkPHP memakai lisensi Apache-2.0; periksa lisensi ekstensi secara terpisah.
Laravel 13.x
Laravel 13 membutuhkan PHP 8.3 atau lebih baru.
- Pilihan instalasi dapat menambahkan frontend, starter kit, serta perangkat pengujian.
- Laravel memakai lisensi MIT; paket tambahan memiliki ketentuannya sendiri.
Dampaknya saat mengerjakan proyek
Periksa ekstensi PHP dan lockfile sebelum memilih hosting. Gunakan PHP yang masih dipelihara dan cocok dengan seluruh dependensi.Ringkasan perbedaan yang bisa dibawa ke proyek
Buka referensi ini saat membaca repository nyata. Isinya adalah konvensi yang perlu diperiksa, bukan skor untuk menentukan pemenang universal.
| Aspek | ThinkPHP 8.x | Laravel 13.x |
|---|---|---|
| Runtime / lisensi | PHP ≥8.0 · Apache-2.0 | PHP ≥8.3 · MIT |
| File route | route/app.php | routes/web.php; routing API opsional |
| Parameter route | hello/:name | /hello/{name} |
| Lokasi controller | app/controller | app/Http/Controllers |
| Pembacaan database | ThinkORM · select() | Query builder / Eloquent · get() |
| Aturan wajib diisi | require | required |
| Response validasi | Tentukan handler / kontrak JSON | Request JSON umumnya menerima 422 |
| Pengaturan middleware | app/middleware.php | bootstrap/app.php dan grup middleware |
| Template HTML | Driver ThinkView + ThinkTemplate | Blade; tersedia pilihan frontend lain |
| Queue / migrasi | Ekstensi ekosistem yang kompatibel | Konvensi framework dan perintah Artisan |
| Alur pengujian | Pilih dan atur suite pengujian proyek | PHPUnit/Pest serta helper HTTP terdokumentasi |
| Web root produksi | public/ | public/ |
SAME TASK / TWO IMPLEMENTATIONS
Tugasnya sama, cara menuliskannya berbeda
Lihat operasi yang sepadan secara berdampingan. Ikuti import, pola route, akhir query, dan penanganan error, bukan sekadar jumlah baris.
Mengembalikan sapaan berdasarkan nama pada URL.
ThinkPHP: route/app.php. Laravel: routes/web.php. Keduanya memakai route closure agar strukturnya dapat dibandingkan secara setara.
ThinkPHP 8.x
route/app.php
<?php
use think\facade\Route;
Route::get('hello/:name', function (string $name) {
return json([
'name' => $name,
'message' => 'Hello, ' . $name . '!',
]);
});Laravel 13.x
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
Route::get('/hello/{name}', function (string $name) {
return response()->json([
'name' => $name,
'message' => 'Hello, ' . $name . '!',
]);
});Contoh GET ini menghasilkan JSON tanpa database. File route yang sudah ada mungkin telah memiliki tag pembuka PHP dan import.
CONTEXT / NOT A LEADERBOARD
Pilih jalur belajar dari situasimu
Pilih kondisi yang paling mendekati kebutuhanmu, lalu ubah perbandingan menjadi rencana kecil yang bisa dikerjakan.
Mulai dari aplikasi yang memang harus dirawat
Mempelajari versi ThinkPHP yang terpasang memberi arah langsung untuk membuat perubahan yang berguna.
- Baca composer.lock, konfigurasi route, middleware, dan titik masuk deployment.
- Telusuri satu endpoint nyata dari input, akses data, hingga response.
- Tambahkan pemeriksaan regresi sebelum mengubah endpoint atau memperbarui paket.
07 / YOUR NEXT MOVE
Pilih jalur berdasarkan pekerjaan yang sedang dihadapi
ThinkPHP menarik dipelajari saat…
- Kamu merawat aplikasi ThinkPHP. Telusuri satu fitur nyata dari route, controller, sampai response sebelum mengubah arsitekturnya.
- Kamu bekerja sama dengan tim yang memakai sumber PHP Mandarin. Baca satu bab dokumentasi singkat, lalu hubungkan istilah baru dengan kode yang bisa dijalankan.
- Kamu sudah mengenal Laravel dan ingin memahami konvensi lain. Buat ulang endpoint baca sederhana, lalu bandingkan penataan kedua proyek tersebut.
Tetap masukkan dasar ini ke rencana belajar
- Pelajari PHP modern, Composer, metode HTTP, status response, dan penanganan error. Jalan pintas framework lebih mudah dievaluasi setelah kamu tahu proses yang disederhanakannya.
- Latih validasi, otorisasi, dan query database secara terpisah. Response JSON yang berhasil baru langkah awal menuju aplikasi yang dapat dipercaya.
- Uji perilaku yang dibutuhkan, catat asumsi deployment, dan simpan lockfile dependensi dalam version control. Proyek yang bisa dipasang ulang secara konsisten berguna untuk framework apa pun.
08 / 中文 × CODE
Enam istilah Mandarin agar dokumentasi terasa lebih akrab
- 框架kuàng jià
- Framework: struktur dan konvensi yang menjadi dasar aplikasi.
- 路由lù yóu
- Routing: menghubungkan URL dan metode HTTP dengan handler.
- 控制器kòng zhì qì
- Controller: kode yang mengoordinasikan request dan response.
- 模型mó xíng
- Model: abstraksi perilaku data; peran rincinya mengikuti desain aplikasi.
- 中间件zhōng jiān jiàn
- Middleware: pemrosesan bersama di sekitar penanganan request.
- 验证yàn zhèng
- Validasi: memeriksa apakah input memenuhi aturan sebuah operasi.
09 / READY TO BUILD
Pemeriksaan singkat sebelum aplikasi dipublikasikan
Gunakan daftar belajar ini untuk menemukan pekerjaan berikutnya. Semua kotak tercentang tetap tidak menggantikan pengujian pada aplikasimu sendiri.
0/6 pemeriksaan ditinjau
10 / FAQ
Pertanyaan sebelum memutuskan belajar framework
Kenapa rekan kerja China saya belum mengenal Laravel?
Dalam percakapan yang saya ceritakan di artikel ini, rekan kerja saya memang belum mengenal Laravel. Ada juga dokumentasi dan diskusi di komunitas Laravel China. Itu menggambarkan pengalaman yang berbeda; pertanyaan lanjutannya adalah perangkat dan proyek apa yang benar-benar ditemui oleh tim tersebut.
Belajar ThinkPHP berarti mengganti Vue?
Tidak. ThinkPHP menjalankan PHP di server, sedangkan Vue membangun antarmuka. Keduanya dapat terhubung melalui API HTTP, atau ThinkPHP dapat menyajikan halaman dari server. Website ini tetap merupakan portfolio Vue.
Apakah setiap request harus memakai model dan template?
Tidak. Sapaan JSON sederhana bisa memakai route dan controller tanpa database atau template. Gunakan model, service, dan perangkat penyajian ketika kebutuhan aplikasinya memang memerlukan itu.
Bolehkah tutorial ThinkPHP lama langsung disalin ke proyek baru?
Periksa dulu versi framework dan paketnya. Struktur direktori, konfigurasi, ekstensi, dan API bisa berbeda antargenerasi. Mulai dari dokumentasi untuk versi yang dipasang, lalu buktikan contoh tersebut secara lokal.
11 / REFERENCES
Lanjutkan dari sumber aslinya
Gunakan proyek resmi, repository framework, dan dokumentasi sebagai rujukan teknis. Komunitas membantu menjelaskan konteks; klaim popularitas tetap membutuhkan bukti tersendiri.