PHP adalah bahasa pemrograman yang menguasai sebagian besar website di dunia, dari blog sederhana hingga platform berskala besar. Pada Course ini, kita mempelajari PHP secara menyeluruh: mulai dari pengenalan dan instalasi, sintaks dasar, tipe data, control flow, array, dan fungsi; berlanjut ke object-oriented programming, namespaces, Composer, dan fitur modern PHP 8; lalu naik ke topik web nyata seperti form handling, sessions, database dengan PDO, REST API, keamanan, testing, hingga deployment.
Materi disusun bertahap mengikuti progression pembelajaran. Setiap Section membangun di atas Section sebelumnya, dan Section Proyek PHP di akhir Course menggabungkan seluruh materi ke dalam sebelas proyek bertingkat — dari kalkulator terminal sampai aplikasi SaaS multi-tenant.
Seluruh contoh kode pada Course ini diuji menggunakan PHP 8.4. Apabila Anda menggunakan versi PHP yang berbeda, hasil eksekusi beberapa contoh dapat sedikit berbeda, terutama pada bagian yang memanfaatkan fitur terbaru.
Bab 1 Pengenalan PHP
Pelajari definisi PHP, makna akronimnya, dan cara PHP menghasilkan halaman web dinamis.
Buka → # Sejarah dan Evolusi PHPPelajari perjalanan PHP dari skrip sederhana tahun 1994 hingga menjadi bahasa modern berperforma tinggi.
Buka → # Kegunaan dan Ekosistem PHPPelajari berbagai kegunaan PHP beserta ekosistem Composer, framework, dan ekstensinya.
Buka → # Bagaimana PHP BekerjaPelajari perjalanan kode PHP dari berkas sumber hingga menjadi tanggapan yang diterima browser.
Buka → # PHP vs Bahasa Pemrograman LainPelajari perbandingan PHP dengan Python, JavaScript, Go, dan Java untuk memilih alat yang tepat.
Buka → # Memahami Server-Side ProgrammingPelajari perbedaan peran browser dan server serta alur kerja pengolahan data di sisi server.
Buka → # Memahami PHP RuntimePelajari komponen Zend Engine, tahap kompilasi opcode, dan model eksekusi per-request PHP.
Buka → # Versi PHP dan KompatibilitasPelajari siklus rilis PHP, cara memeriksa versi, dan teknik menulis kode yang kompatibel.
Buka →Bab 2 Instalasi dan Lingkungan Pengembangan
Pelajari cara memilih versi dan jalur instalasi PHP untuk menyiapkan komputer belajar Anda.
Buka → # Instalasi PHP di LinuxPelajari cara memasang PHP di Ubuntu, Debian, Fedora, dan Arch Linux beserta ekstensi umum yang dibutuhkan course ini.
Buka → # Instalasi PHP di WindowsPelajari cara memasang PHP di Windows melalui berkas ZIP resmi, winget, atau bundel seperti Laragon dan XAMPP.
Buka → # Instalasi PHP di macOSPelajari cara memasang PHP di macOS dengan Homebrew serta alternatif praktis seperti Laravel Herd dan XAMPP.
Buka → # Memahami PHP CLIPelajari cara menjalankan skrip PHP dari terminal dengan php-cli, mulai dari berkas, mode -r, hingga server web bawaan.
Buka → # Memeriksa Versi PHPPelajari cara membaca informasi versi PHP dari terminal dan dari dalam skrip, lalu membandingkannya dengan version_compare().
Buka → # Memahami PHP ConfigurationPelajari dari mana PHP membaca konfigurasi, cara melihatnya dengan php -i dan php --ini, serta membaca dan mengubah nilai dari dalam skrip.
Buka → # php.iniPelajari struktur berkas php.ini, directive penting untuk pemula, prasetel development dan production, serta mekanisme berkas tambahan di conf.d.
Buka → # Mengaktifkan PHP ExtensionsPelajari cara melihat, memeriksa, dan mengaktifkan ekstensi PHP dengan php -m, extension_loaded(), dan direktif extension=.
Buka → # Memilih Code EditorPelajari cara memilih code editor untuk PHP, dari VS Code dengan Intelephense hingga PhpStorm, Zed, dan Neovim.
Buka → # Menggunakan TerminalPelajari perintah terminal dasar untuk menjalankan skrip PHP, mengelola berkas proyek, dan bekerja jauh lebih cepat.
Buka → # Mengatasi Masalah InstalasiPelajari cara mendiagnosis masalah instalasi PHP seperti command not found, PATH, beberapa versi PHP, dan ekstensi yang gagal dimuat.
Buka →Bab 3 Menjalankan Program PHP
Pelajari cara membuat, menjalankan, dan memahami program PHP pertama Anda dari awal sampai tampil di terminal.
Buka → # Struktur File PHPPelajari cara kerja berkas PHP dieksekusi dari atas ke bawah dan kebiasaan penulisan berkas yang rapi.
Buka → # PHP TagsPelajari semua bentuk PHP tags untuk menyisipkan kode PHP di dalam HTML dengan rapi.
Buka → # Statement dan ExpressionPelajari perbedaan statement dan expression beserta aturan titik koma yang menjadi napas setiap program PHP.
Buka → # Indentasi dan Code BlockPelajari cara menata statement dengan indentasi dan code block agar kode PHP mudah dibaca manusia.
Buka → # KomentarPelajari cara menulis komentar satu baris, multi-baris, dan doc comment agar kode PHP menjelaskan dirinya sendiri.
Buka → # Output dengan echo dan printPelajari perbedaan echo dan print beserta escape sequence untuk mengendalikan output program PHP Anda.
Buka → # Menjalankan Script melalui CLIPelajari cara menjalankan script PHP lewat CLI: dari berkas, kode sekali pakai, hingga script executable dengan exit code.
Buka → # Built-in Web ServerPelajari cara menjalankan web server PHP bawaan untuk menguji halaman web di komputer Anda sendiri.
Buka → # PHP Interactive ShellPelajari cara menguji potongan kode PHP secara interaktif tanpa membuat berkas melalui interactive shell dan php -r.
Buka → # Memahami PHP ErrorsPelajari cara membaca pesan error PHP untuk menemukan lokasi kesalahan dan membedakan parse error, fatal error, dan warning.
Buka →Bab 4 Sintaks Dasar dan Variabel
Pelajari cara membuat, memberikan nilai, dan menggunakan variabel dalam PHP.
Buka → # Aturan Penamaan VariabelPelajari aturan penamaan variabel PHP secara mendalam untuk menulis kode yang bebas galat dan mudah dibaca.
Buka → # ConstantsPelajari cara membuat nilai tetap dengan define() dan const serta memanfaatkan magic constants bawaan PHP.
Buka → # Variable ScopePelajari aturan local scope, global scope, static variable, dan batas include untuk mengendalikan visibilitas variabel.
Buka → # SuperglobalsPelajari delapan superglobals bawaan PHP beserta cara membacanya dengan aman dari CLI maupun web.
Buka → # Memahami Variable ReferencesPelajari cara kerja references sebagai alias di symbol table beserta jebakannya pada foreach dan unset.
Buka → # Dynamic VariablesPelajari cara membuat nama variabel yang dihitung saat runtime dengan dynamic variables beserta pola pemakaian dan risikonya.
Buka → # Strict TypesPelajari cara mengaktifkan declare(strict_types=1) untuk mematikan konversi tipe otomatis dan menegakkan tipe argumen secara ketat.
Buka → # PHP Type SystemPelajari peta lengkap type system PHP — kategori tipe, alat pemeriksa tipe, dan tempat deklarasi tipe boleh muncul.
Buka →Bab 5 Tipe Data dan Type System
Pelajari cara PHP menyimpan bilangan bulat, batas 64-bit, penulisan berbagai basis bilangan, dan perilaku pembagian.
Buka → # Floating-Point NumbersPelajari cara kerja float PHP, jebakan presisi biner 0.1+0.2, perbandingan dengan toleransi, pembulatan, serta NAN dan INF.
Buka → # StringsPelajari string sebagai tipe data PHP — array byte yang bisa diindeks, perilaku panjangnya, dan konversinya menjadi angka.
Buka → # BooleansPelajari tipe boolean PHP, daftar lengkap nilai falsy, jebakan truthiness string, dan praktik perbandingan yang eksplisit.
Buka → # nullPelajari nilai null PHP, perbedaannya dengan variabel yang belum didefinisikan, operator ?? dan ?->, serta perilakunya dalam operasi.
Buka → # ArraysPelajari array PHP sebagai ordered map — satu tipe untuk daftar dan pemetaan, lengkap dengan aturan konversi key-nya.
Buka → # ObjectsPelajari object sebagai tipe data PHP — instance class, stdClass, casting array ke object, dan perilaku salinan berbasis referensi.
Buka → # Type JugglingPelajari aturan konversi tipe otomatis PHP pada aritmetika, string numerik, perbandingan, dan null.
Buka → # Type CastingPelajari cara mengonversi nilai antar tipe data secara eksplisit dengan type casting di PHP.
Buka → # Type CheckingPelajari cara memeriksa tipe data saat runtime dengan fungsi is_*, gettype(), dan get_debug_type().
Buka → # Nullable TypesPelajari cara mendeklarasikan tipe yang juga mengizinkan null dengan sintaks nullable types di PHP.
Buka → # Union TypesPelajari cara mendeklarasikan parameter dan nilai kembali yang menerima lebih dari satu tipe dengan union types.
Buka → # Intersection TypesPelajari cara mendeklarasikan tipe yang mewajibkan nilai memenuhi beberapa interface sekaligus dengan intersection types.
Buka → # Literal TypesPelajari cara menyatakan tipe yang hanya menerima satu nilai spesifik — dari true dan false yang berdiri sendiri hingga literal string lewat PHPDoc.
Buka → # never dan voidPelajari cara mendeklarasikan fungsi tanpa nilai balik dengan void dan fungsi yang sama sekali tidak pernah kembali dengan never.
Buka → # Memahami Type ErrorsPelajari cara membaca pesan TypeError pada mode weak dan strict, menangkapnya dengan try-catch, serta menelusuri stack trace.
Buka →Bab 6 Operator dan Expression
Pelajari cara melakukan perhitungan dengan operator aritmatika PHP, dari penjumlahan dasar hingga modulo, pangkat, dan penanganan pembagian nol.
Buka → # Operator AssignmentPelajari cara memberi nilai ke variabel secara ringkas dengan operator assignment, dari bentuk dasar, operator gabungan, hingga assignment referensi.
Buka → # Operator PerbandinganPelajari cara membandingkan nilai dengan operator perbandingan PHP dan pahami aturan perbandingan longgar antara string dan angka di PHP 8.
Buka → # Operator IdentitasPelajari cara membandingkan nilai dan tipe data secara ketat dengan operator identitas === dan !== pada angka, string, array, hingga object.
Buka → # Operator LogikaPelajari cara menggabungkan beberapa kondisi dengan operator logika PHP dan hindari jebakan precedence antara && dan and.
Buka → # Operator StringPelajari cara menggabungkan teks dengan operator string PHP, memahami koersi angka, dan urutan evaluasi terhadap operator aritmatika.
Buka → # Operator ArrayPelajari cara menggabungkan array dengan operator union +, membandingkan array dengan == dan ===, serta menambah elemen dengan kurung siku.
Buka → # Operator BitwisePelajari cara mengolah angka di tingkat bit dengan operator bitwise PHP, dari AND, OR, XOR, shift, hingga teknik bitmask untuk kumpulan opsi.
Buka → # Null Coalescing OperatorPelajari cara memberi nilai cadangan secara ringkas dengan operator ?? dan ??= untuk menangani data yang mungkin tidak ada.
Buka → # Nullsafe OperatorPelajari cara mengakses method dan properti objek secara aman dengan nullsafe operator ?-> untuk menghindari fatal error.
Buka → # Ternary OperatorPelajari cara memilih nilai dalam satu ekspresi dengan ternary operator ? : beserta bentuk pendeknya ?:.
Buka → # Spaceship OperatorPelajari cara membandingkan dua nilai sekaligus dengan spaceship operator <=> untuk logika perbandingan dan pengurutan yang ringkas.
Buka → # Increment dan DecrementPelajari cara kerja operator ++ dan -- beserta perbedaan pre-increment dan post-increment pada angka, null, dan string.
Buka → # Operator PrecedencePelajari cara PHP menentukan urutan evaluasi operator dan gunakan tanda kurung untuk menulis ekspresi yang jelas.
Buka → # Truthiness dan Short-CircuitPelajari cara PHP mengubah nilai menjadi boolean serta memanfaatkan short-circuit untuk logika yang aman dan efisien.
Buka →Bab 7 String dan Text Processing
Pelajari cara menulis string dalam PHP dengan empat keluarga sintaks serta memahami string PHP sebagai deretan byte.
Buka → # Single-Quoted dan Double-Quoted StringsPelajari cara kerja string single-quoted dan double-quoted beserta escape, tanda kutip, dan kapan memilih keduanya.
Buka → # Heredoc dan NowdocPelajari cara menulis teks multi-baris dengan heredoc dan nowdoc — dari indentasi fleksibel hingga pola penyusunan SQL dan HTML.
Buka → # String InterpolationPelajari cara menyisipkan nilai variabel, elemen array, dan property object ke dalam string dengan sintaks sederhana maupun kompleks.
Buka → # String ConcatenationPelajari cara menggabungkan string dengan operator titik dan titik-sama-dengan, menyusun teks panjang, serta menggabungkan array dengan implode().
Buka → # String Length dan EncodingPelajari cara mengukur panjang string dengan strlen dan mb_strlen serta memotong teks UTF-8 tanpa merusak karakternya.
Buka → # Searching dalam StringPelajari cara mencari teks di dalam string dengan str_contains, strpos, mb_strpos, dan substr_count.
Buka → # Replacing TextPelajari cara mengganti teks dalam string dengan str_replace, strtr, substr_replace, dan str_repeat.
Buka → # Trimming dan PaddingPelajari cara membersihkan tepi string dengan trim, menambah karakter dengan str_pad, dan membungkus teks panjang dengan wordwrap.
Buka → # Splitting dan JoiningPelajari cara memecah string menjadi array dengan explode serta menggabungkan array kembali menjadi string dengan implode.
Buka → # String FormattingPelajari cara menyusun teks terformat dengan sprintf, printf, vsprintf, dan number_format untuk keluaran yang rapi.
Buka → # Unicode dan UTF-8Pelajari cara mengolah teks Unicode dan UTF-8 di PHP dengan keluarga fungsi mb_* agar karakter apa pun tetap utuh.
Buka → # Regular ExpressionsPelajari cara menulis pola regular expression dengan preg_match, preg_match_all, preg_replace, dan preg_split untuk mencari serta mengubah teks secara fleksibel.
Buka → # Text NormalizationPelajari cara menyeragamkan teks menjadi bentuk baku dengan mb_strtolower, mb_convert_case, perapian whitespace, dan penghapusan BOM sebelum data disimpan atau dibandingkan.
Buka →Bab 8 Control Flow
Pelajari cara mengambil keputusan di program PHP dengan if-else, aturan truthiness, dan guard clause agar alur kode tetap jelas.
Buka → # elseifPelajari cara merangkai banyak kondisi berurutan dengan elseif untuk memilih satu cabang dari beberapa kemungkinan.
Buka → # Nested ConditionsPelajari cara menyusun if di dalam if, mengenali sarang yang terlalu dalam, lalu merapikannya dengan guard clause dan penggabungan kondisi.
Buka → # Match ExpressionPelajari cara mengganti rantai if-elseif dan switch yang rapuh dengan match expression yang membandingkan ketat dan langsung menghasilkan nilai.
Buka → # while LoopsPelajari cara mengulang blok kode dengan while, dari counter sederhana dan akumulator hingga idiom membaca berkas baris demi baris.
Buka → # do-while LoopsPelajari cara memakai do-while untuk perulangan yang selalu berjalan minimal sekali, termasuk pola validasi input yang menjawab sampai benar.
Buka → # for LoopsPelajari cara memakai for untuk perulangan berbasis hitungan, dari anatomi header init-kondisi-increment hingga loop bersarang.
Buka → # foreach LoopsPelajari cara menelusuri array dan object dengan foreach untuk iterasi yang ringkas dan bebas bug indeks.
Buka → # break dan continuePelajari cara menghentikan dan melewati iterasi dengan break dan continue untuk kendali loop yang presisi.
Buka → # Alternative Control Structure SyntaxPelajari cara memakai sintaks alternatif seperti endif dan endforeach untuk template PHP yang jauh lebih mudah dibaca.
Buka → # goto dan LabelsPelajari cara kerja goto dan label di PHP beserta batasan ketatnya dan alasan ia hampir selalu dihindari.
Buka → # Merancang Control FlowPelajari cara merancang control flow yang mudah dibaca dengan guard clause, early return, dan nesting minimal.
Buka →Bab 9 Arrays dan Collections
Pelajari cara membuat dan mengakses indexed array di PHP untuk mengelola kumpulan data secara berurutan.
Buka → # Associative ArraysPelajari cara menyimpan data berlabel dengan associative array dan membedakan isset dari array_key_exists.
Buka → # Multidimensional ArraysPelajari cara menyusun data berlapis dengan multidimensional array mulai dari matriks hingga daftar produk bertabel.
Buka → # Membuat dan Mengakses ArrayPelajari berbagai cara membuat array dengan range, array_fill, dan explode serta mengakses elemennya secara aman.
Buka → # Menambah, Mengubah, dan Menghapus ElemenPelajari cara menambah, mengubah, dan menghapus elemen array dengan operator penugasan, unset, dan fungsi bawaan PHP.
Buka → # Array UnpackingPelajari cara menggabungkan array dengan spread operator ... secara ringkas, aman, dan efisien.
Buka → # Array DestructuringPelajari cara mengekstrak elemen array langsung ke variabel dengan destructuring yang ringkas.
Buka → # Array Keys dan ValuesPelajari cara mengambil kunci, nilai, dan kolom data dari array dengan array_keys, array_values, dan array_column.
Buka → # Array SortingPelajari cara mengurutkan array dengan sort, asort, ksort, usort, hingga mengamankan urutan data yang stabil.
Buka → # Searching dan Filtering ArraysPelajari cara mencari nilai di dalam array dan menyaring elemennya dengan in_array, array_search, array_filter, dan array_slice.
Buka → # array_map, array_filter, dan array_reducePelajari cara membentuk dan merangkum data array dengan array_map, array_filter, dan array_reduce untuk pipeline pengolahan data yang ringkas.
Buka → # Array Merge dan DifferencePelajari cara menggabungkan dan membandingkan array dengan array_merge, operator union, difference, dan intersect agar data tersusun tanpa kehilangan kunci.
Buka → # Array Copy dan ReferencesPelajari cara PHP menyalin array lewat copy-on-write dan kapan reference (&) mengikat dua variabel ke array yang sama.
Buka → # Array IterationPelajari cara mengiterasi array dengan foreach, for, array_walk, iterator, dan generator agar setiap loop memakai alat yang tepat.
Buka → # Array FunctionsPelajari kumpulan fungsi array praktis sehari-hari — compact, array_pad, range, array_unique, array_rand, sampai array_is_list — untuk bekerja lebih cepat.
Buka → # Memilih Struktur DataPelajari cara memilih antara array, stdClass, dan class dengan typed properties agar data Anda fleksibel, aman, dan mudah dibaca.
Buka →Bab 10 Fungsi
Pelajari cara mendefinisikan fungsi dengan kata kunci function, mengembalikan nilai, dan menata urutan definisi fungsi di berkas PHP.
Buka → # Memanggil FungsiPelajari cara memanggil fungsi PHP: urutan evaluasi argumen, jumlah argumen yang salah, dan gaya pemanggilan dari string sampai first-class callable.
Buka → # Parameters dan ArgumentsPelajari perbedaan parameter dan argument, lalu cara PHP mengirim nilai: by value sebagai salinan atau by reference ke variabel asli.
Buka → # Default ParametersPelajari cara memberi nilai default pada parameter fungsi PHP, dari ekspresi konstan sampai pola nullable dan aturan urutan parameter wajib.
Buka → # Named ArgumentsPelajari cara memanggil fungsi PHP dengan named arguments untuk mengisi parameter berdasarkan nama, melompati parameter opsional yang tidak relevan.
Buka → # Variadic FunctionsPelajari cara menerima jumlah argumen yang tidak tetap dengan variadic functions untuk membuat fungsi yang lebih fleksibel.
Buka → # Return ValuesPelajari cara mengembalikan nilai dari fungsi agar hasil perhitungan bisa dimanfaatkan di seluruh program.
Buka → # Return TypesPelajari cara menyatakan return type pada fungsi agar nilai kembalian terjaga dan kontrak fungsi semakin jelas.
Buka → # Parameter TypesPelajari cara memberi tipe pada parameter fungsi untuk mencegah data yang tidak sesuai masuk ke dalam fungsi.
Buka → # Strict Types dalam FungsiPelajari cara mengaktifkan strict_types untuk mematikan koersi tipe otomatis pada pemanggilan fungsi.
Buka → # Variable Scope dalam FungsiPelajari cara variable scope bekerja di dalam fungsi agar variabel global dan lokal tidak saling tertukar.
Buka → # global dan static VariablesPelajari cara memakai variabel global dan static agar fungsi mengingat state, beserta jebakan dan alternatif yang lebih bersih.
Buka → # Anonymous FunctionsPelajari cara membuat anonymous function sebagai nilai, memakainya sebagai callback, dan mengenalnya sebagai object Closure.
Buka → # ClosuresPelajari cara closure menangkap variabel dari scope luar lewat use() secara by value maupun by reference.
Buka → # Arrow FunctionsPelajari cara menulis fungsi pendek satu ekspresi dengan arrow function fn() beserta aturan capture otomatisnya.
Buka → # First-Class CallablesPelajari cara mengubah fungsi dan method menjadi nilai dengan sintaks strlen(...) yang diperkenalkan PHP 8.1.
Buka → # RecursionPelajari cara fungsi memanggil dirinya sendiri untuk menyelesaikan masalah berulang dan struktur bersarang.
Buka → # Merancang Fungsi yang BaikPelajari prinsip merancang fungsi yang mudah dibaca, diuji, dan dirawat sepanjang umur aplikasi.
Buka →Bab 11 Error Handling
Pelajari cara membaca anatomi pesan error PHP dan membedakan kegagalan ringan dari yang menghentikan program.
Buka → # Error LevelsPelajari cara mengatur level error PHP dengan error_reporting() untuk mengendalikan pelaporan kegagalan program.
Buka → # Warnings, Notices, dan Fatal ErrorsPelajari cara mengenali dan memperbaiki pemicu paling umum Warning, Deprecated, dan Fatal Error di PHP 8.
Buka → # ExceptionsPelajari cara melempar dan membaca exception PHP sebagai object kegagalan dengan pesan, kode, dan jejak panggilan.
Buka → # try-catch-finallyPelajari cara menangkap exception dengan try-catch, menggabungkan tipe dalam satu blok, dan menjamin cleanup dengan finally.
Buka → # throw dan RethrowPelajari cara melempar exception dari titik mana pun dan melempar ulang dengan konteks untuk menelusuri penyebab kegagalan.
Buka → # Custom ExceptionsPelajari cara membuat class exception sendiri agar setiap kegagalan domain memiliki tipe yang spesifik dan mudah ditangani.
Buka → # Exception HierarchyPelajari pohon keluarga Throwable beserta cabang Error dan Exception untuk menangkap kegagalan pada tingkat presisi yang tepat.
Buka → # Error vs ExceptionPelajari perbedaan error mesin dan exception untuk memilih mekanisme penanganan kegagalan yang tepat.
Buka → # Error ReportingPelajari cara mengatur level pelaporan error serta tampilannya dengan error_reporting, display_errors, dan log_errors agar masalah kode cepat terlihat.
Buka → # Error HandlersPelajari cara memasang error handler kustom dengan set_error_handler untuk mencatat warning dan mengubahnya menjadi exception yang terkontrol.
Buka → # Exception HandlersPelajari cara memasang exception handler dengan set_exception_handler sebagai jaring pengaman terakhir sebelum program berhenti.
Buka → # Logging ErrorsPelajari cara mencatat error ke berkas log dengan error_log dan format pesan terstruktur agar kegagalan aplikasi mudah ditelusuri.
Buka → # Production Error HandlingPelajari cara menyusun strategi error handling untuk produksi agar pengunjung tetap nyaman dan developer tetap mendapat informasi lengkap.
Buka →Bab 12 File System dan Streams
Pelajari cara membaca isi file di PHP dengan file_get_contents, fopen, fgets, fread, hingga menangani file yang tidak dapat dibaca.
Buka → # Menulis FilePelajari cara menulis file di PHP dengan file_put_contents, fwrite, mode w dan x, implode untuk daftar baris, hingga pengaruh umask.
Buka → # Append dan File LockingPelajari cara menambahkan data ke file dengan mode a dan FILE_APPEND, lalu melindungi penulisan bersamaan dengan flock dan LOCK_EX.
Buka → # File PermissionsPelajari cara membaca dan mengubah file permission di PHP dengan chmod, fileperms, is_readable, is_writable, serta efek umask.
Buka → # Directory OperationsPelajari cara mengelola direktori di PHP dengan mkdir, rmdir, scandir, DirectoryIterator, glob, dan RecursiveDirectoryIterator.
Buka → # File InformationPelajari cara memeriksa keberadaan, ukuran, waktu modifikasi, dan tipe berkas dengan fungsi informasi berkas PHP.
Buka → # Filesystem PathsPelajari cara membangun dan menormalkan path berkas lintas sistem operasi dengan __DIR__, dirname, dan realpath.
Buka → # Temporary FilesPelajari cara membuat dan membersihkan berkas temporer dengan tmpfile, tempnam, dan register_shutdown_function.
Buka → # Uploads dan File StoragePelajari cara menangani upload berkas dengan aman mulai dari struktur $_FILES hingga strategi penyimpanan.
Buka → # StreamsPelajari cara kerja streams sebagai abstraksi I/O terpadu PHP beserta wrapper php:// yang menyertainya.
Buka → # Stream ContextsPelajari cara mengonfigurasi operasi stream PHP dengan stream context untuk mengatur timeout, header, dan verifikasi SSL.
Buka → # Stream WrappersPelajari cara kerja stream wrapper PHP dari skema data:// dan php:// sampai wrapper kustom buatan sendiri.
Buka → # File LockingPelajari cara mengunci berkas dengan flock agar banyak proses bisa menulis tanpa saling merusak data.
Buka → # Filesystem SecurityPelajari cara mempertahankan keamanan filesystem PHP dari path traversal hingga penyimpanan upload yang aman.
Buka →Bab 13 Date, Time, dan Localization
Pelajari cara merepresentasikan tanggal dan jam sebagai objek DateTime untuk pengolahan waktu yang presisi dan mudah dibaca.
Buka → # DateTimeImmutablePelajari cara DateTimeImmutable mencegah bug mutasi tak sengaja dengan selalu mengembalikan objek baru pada setiap perubahan.
Buka → # Parsing dan Formatting DatesPelajari cara mengubah string menjadi objek waktu dengan createFromFormat dan menyusunnya kembali secara aman.
Buka → # Date IntervalsPelajari cara merepresentasikan durasi dan selisih waktu dengan DateInterval untuk aritmetika tanggal yang akurat.
Buka → # Date PeriodsPelajari cara mengiterasi rentang tanggal berulang dengan DatePeriod untuk menyusun jadwal dan laporan.
Buka → # TimezonePelajari cara mengelola timezone dengan DateTimeZone untuk menampilkan waktu yang akurat bagi pengguna di zona mana pun.
Buka → # Unix TimestampsPelajari cara memakai Unix timestamp untuk merepresentasikan titik waktu sebagai satu angka yang mudah dihitung.
Buka → # Locale-Aware FormattingPelajari cara memformat tanggal dalam Bahasa Indonesia melalui tabel pemetaan manual maupun ext-intl.
Buka → # InternationalizationPelajari cara merancang aplikasi multi-bahasa mulai dari kode locale, katalog pesan, hingga format angka dan mata uang.
Buka → # Menangani Date/Time dengan AmanPelajari cara menyimpan UTC, memvalidasi input, dan menghindari jebakan DST untuk penanganan date/time yang aman.
Buka →Bab 14 Object-Oriented Programming
Pelajari cara mendefinisikan class dan membuat object dengan new untuk mengorganisasi program yang kompleks.
Buka → # Properties dan MethodsPelajari cara mendeklarasikan property dan method agar class menyimpan data serta perilaku dalam satu tempat.
Buka → # ConstructorsPelajari cara memakai method __construct agar object siap dipakai sejak pertama kali dibuat.
Buka → # Object InitializationPelajari cara mengelola urutan inisialisasi object agar selalu berada dalam kondisi valid sejak lahir.
Buka → # Visibility: public, protected, privatePelajari cara mengatur visibility public, protected, dan private untuk melindungi data di dalam class Anda.
Buka → # InheritancePelajari cara mewarisi class dengan extends untuk memakai ulang kode dan menyusun hierarki class yang rapi.
Buka → # Method OverridingPelajari cara menimpa method parent dengan signature yang kompatibel untuk mengubah perilaku tanpa menulis ulang semuanya.
Buka → # parent dan static KeywordsPelajari cara kerja kata kunci parent, self, dan static untuk mengakses member class dan constant dengan tepat.
Buka → # Static Properties dan MethodsPelajari cara membuat property dan method static milik class itu sendiri untuk memakainya pada konteks yang tepat.
Buka → # Abstract ClassesPelajari cara mendefinisikan class abstract sebagai kontrak parsial untuk memaksa child mengimplementasikan perilaku tertentu.
Buka → # InterfacesPelajari cara mendefinisikan kontrak interface untuk membangun kode yang fleksibel dan mudah diuji.
Buka → # TraitsPelajari cara memakai trait untuk berbagi implementasi antar class tanpa inheritance.
Buka → # Anonymous ClassesPelajari cara membuat anonymous class untuk implementasi sekali pakai dan test double.
Buka → # final Classes dan MethodsPelajari cara memakai final untuk melindungi class dan method dari modifikasi tak terduga.
Buka → # Object CompositionPelajari cara merakit object dari object lain agar desain lebih fleksibel daripada inheritance.
Buka → # Object ComparisonPelajari cara PHP membandingkan object dengan == dan === serta menyusun perbandingan kustom dengan spaceship operator.
Buka → # Cloning ObjectsPelajari cara menyalin object dengan clone, mengatasi shallow copy melalui __clone, dan alternatif object immutable.
Buka → # Magic MethodsPelajari cara magic method seperti __get, __call, dan __toString membuat object PHP berperilaku lebih lentur dan ekspresif.
Buka → # Late Static BindingPelajari cara static:: menunda resolusi pemanggilan class hingga runtime sehingga kode static tetap lentur di bawah inheritance.
Buka → # Kapan Menggunakan OOPPelajari cara menilai kapan OOP benar-benar memberi keuntungan dan kapan kode prosedural sederhana justru lebih tepat.
Buka →Bab 15 Advanced Object Model
Pelajari cara mendeklarasikan property bertipe agar kesalahan penugasan nilai tertangkap sejak dini.
Buka → # Readonly PropertiesPelajari cara mengunci nilai property agar hanya diinisialisasi sekali dan object Anda tetap dapat dipercaya.
Buka → # Readonly ClassesPelajari cara mengunci seluruh property sebuah class sekaligus dengan readonly class agar objek benar-benar immutable.
Buka → # Constructor Property PromotionPelajari cara meringkas deklarasi property dan assignment constructor menjadi satu baris dengan constructor property promotion.
Buka → # Property HooksPelajari cara menempelkan logika validasi dan komputasi langsung pada property dengan property hooks PHP 8.4.
Buka → # Asymmetric VisibilityPelajari cara memisahkan visibility baca dan tulis property agar nilai hanya bisa diubah dari dalam class.
Buka → # EnumsPelajari cara mendefinisikan kumpulan nilai tetap dengan enum agar status dan kategori tidak lagi berupa string liar.
Buka → # Backed EnumsPelajari cara menautkan nilai int atau string pada case enum agar data dari database dan API bisa dikonversi menjadi tipe yang aman.
Buka → # AttributesPelajari cara menempelkan metadata terstruktur pada class, method, dan property dengan attribute agar kode lain bisa membacanya secara programatik.
Buka → # ReflectionPelajari cara memeriksa dan menjalankan struktur class, method, dan property saat runtime dengan reflection.
Buka → # GeneratorsPelajari cara membangun generator dengan yield untuk memproses data berukuran besar secara hemat memori.
Buka → # IteratorsPelajari cara mengimplementasikan Iterator dan IteratorAggregate agar objek buatan Anda bisa dijelajahi foreach.
Buka → # Iterable TypesPelajari cara memakai tipe iterable agar fungsi Anda menerima array maupun iterator secara seragam.
Buka → # Weak ReferencesPelajari cara memakai WeakReference dan WeakMap agar referensi Anda tidak menghalangi garbage collector.
Buka → # Object Model Best PracticesPelajari cara merangkai fitur object model PHP menjadi desain class yang sehat dan mudah dirawat.
Buka →Bab 16 Namespaces dan Autoloading
Pelajari cara mengelompokkan class, function, dan konstanta dengan namespaces untuk mencegah bentrok nama di proyek besar.
Buka → # Namespace DeclarationsPelajari cara mendeklarasikan namespace dengan benar, dari penempatan di awal berkas hingga sub-namespace bertingkat.
Buka → # Namespace ImportsPelajari cara meng-import class, function, dan constant dari namespace lain dengan statement use agar kode lebih ringkas.
Buka → # Fully Qualified NamesPelajari cara memakai nama absolut ber-backslash awal, perbedaannya dengan nama relatif, dan kapan bentuk tersebut wajib dipakai.
Buka → # Namespace AliasesPelajari cara memberi nama lain dengan kata kunci as untuk mempersingkat nama panjang dan menyelesaikan konflik antar namespace.
Buka → # Namespace ResolutionPelajari aturan resolusi nama unqualified, qualified, dan fully qualified beserta fallback function dan constant ke scope global.
Buka → # AutoloadingPelajari cara kerja autoloading class PHP, dari masalah require manual hingga pendaftaran autoloader modern dengan spl_autoload_register.
Buka → # SPL AutoloadPelajari cara memakai SPL autoload untuk mengelola antrean autoloader yang fleksibel, terurut, dan dapat diinspeksi.
Buka → # PSR-4 AutoloadingPelajari aturan pemetaan PSR-4 dari namespace ke jalur berkas dan bangun autoloader PSR-4 minimal Anda sendiri.
Buka → # Composer AutoloadingPelajari cara mendeklarasikan autoloading di composer.json dan memakai vendor/autoload.php untuk memuat seluruh class proyek Anda.
Buka → # Merancang Namespace ProjectPelajari cara merancang struktur namespace proyek yang sehat sejak awal agar tetap rapi dan tidak merusak konsumen saat berevolusi.
Buka →Bab 17 Modern PHP
Pelajari bagaimana named arguments mengubah gaya pemanggilan fungsi PHP modern, dari fungsi bawaan berparameter panjang hingga constructor promotion, variadic, dan risiko kompatibilitasnya.
Buka → # Match ExpressionsPelajari cara match expression PHP 8.0 menuntaskan bug fallthrough switch dan mengubah percabangan nilai menjadi ekspresi yang aman dan ringkas.
Buka → # Nullsafe OperatorPelajari cara nullsafe operator PHP 8.0 menggantikan rantai pemeriksaan null bertingkat dengan satu baris ?-> yang ringkas dan aman.
Buka → # Union TypesPelajari cara union types PHP 8.0 mengubah anotasi docblock yang tidak dijalankan menjadi deklarasi tipe int|string yang benar-benar diperiksa saat runtime.
Buka → # Intersection TypesPelajari cara intersection types PHP 8.1 menggantikan interface artifisial dan pemeriksaan instanceof manual dengan deklarasi A&B yang menuntut dua kontrak sekaligus.
Buka → # never Return TypePelajari cara return type never pada PHP 8.1 mendokumentasikan function yang tidak pernah kembali dan menjadi fondasi static analysis yang lebih cerdas.
Buka → # EnumsPelajari cara enum PHP 8.1 menggantikan pola lama konstanta class dan peniruan constructor private menjadi daftar nilai bernama yang aman tipe.
Buka → # Readonly Properties dan ClassesPelajari cara readonly properties dan readonly classes menghentikan bug object yang berubah diam-diam dan menyederhanakan pola with() untuk data yang tidak boleh dimodifikasi.
Buka → # FibersPelajari cara kerja fiber PHP 8.1 sebagai function yang bisa dihentikan dan dilanjutkan di tengah eksekusi, lengkap dengan perbandingannya terhadap generator dan alasan mengapa kita jarang memakainya secara langsung.
Buka → # Property HooksPelajari cara property hooks PHP 8.4 menggantikan boilerplate getter dan setter dengan logika yang menempel langsung pada property.
Buka → # Asymmetric VisibilityPelajari cara asymmetric visibility PHP 8.4 memisahkan hak baca dan hak tulis property sehingga pola wither menjadi ringkas tanpa membuka pintu mutasi dari luar.
Buka → # Modern PHP Version FeaturesPelajari cara membaca peta fitur PHP 8.0 hingga 8.4 untuk mengenali peluang modernisasi kode lama.
Buka → # Menjaga Kompatibilitas VersiPelajari cara menjaga kode tetap aman di beberapa versi PHP dengan pemeriksaan versi, polyfill, dan deteksi fitur.
Buka →Bab 18 Type System dan Static Analysis
Pelajari cara membaca dan menulis type declaration di seluruh lokasinya untuk menjadikan kontrak kode eksplisit.
Buka → # Parameter TypesPelajari cara parameter types menjadi kontrak yang mengatur variance dan kompatibilitas signature saat inheritance.
Buka → # Return TypesPelajari cara return types membentuk kontrak covariance yang aman di sepanjang hierarki class.
Buka → # Property TypesPelajari cara mendeklarasikan property bertipe, mengelola keadaan uninitialized, dan mengunci tipe konstanta class.
Buka → # Union, Intersection, dan Nullable TypesPelajari cara menyusun tipe gabungan — union, nullable, false dan null mandiri, DNF, hingga mixed — sebagai referensi sintaks lengkap.
Buka → # VariancePelajari cara variance mengatur arah perubahan tipe parameter, return, dan property ketika method diwarisi atau diimplementasikan.
Buka → # Covariance dan ContravariancePelajari cara covariance dan contravariance bekerja dalam studi kasus inheritance konkret beserta jebakan parameter by-reference.
Buka → # Generics dengan PHPDocPelajari cara membangun tipe generik seperti `Repository<T>` lewat anotasi PHPDoc yang diperiksa PHPStan dan Psalm.
Buka → # PHPDoc TypesPelajari cara menulis tipe kaya seperti array<int, string> dan array shape lewat anotasi PHPDoc.
Buka → # Static AnalysisPelajari cara static analysis menemukan bug sebelum kode dijalankan dan batas kemampuannya.
Buka → # Menggunakan PHPStanPelajari cara memasang dan menjalankan PHPStan untuk menemukan bug tipe di proyek PHP Anda.
Buka → # Menggunakan PsalmPelajari cara memasang dan menjalankan Psalm serta membandingkannya dengan PHPStan.
Buka → # Baseline dan Analysis LevelsPelajari cara menaikkan level analisis PHPStan bertahap dan mengelola utang temuan lama lewat baseline.
Buka → # Membangun Type-Safe CodePelajari strategi menyusun kode PHP yang type-safe dari strict_types hingga value object dan validasi batas.
Buka →Bab 19 Functional Programming
Pelajari cara menulis pure function yang selalu menghasilkan keluaran sama tanpa side effect agar kode lebih mudah diuji.
Buka → # ImmutabilityPelajari cara menjaga data tetap tidak berubah di PHP memakai salinan array, splat operator, dan readonly class.
Buka → # Higher-Order FunctionsPelajari cara membuat higher-order function yang menerima dan mengembalikan fungsi untuk kode yang lebih lentur.
Buka → # ClosuresPelajari cara memakai closure sebagai nilai first-class untuk membangun pabrik fungsi, memoisasi, dan decorator.
Buka → # array_map, array_filter, dan array_reducePelajari cara mengganti foreach dengan pipeline map, filter, dan reduce yang lebih mudah dibaca.
Buka → # First-Class CallablesPelajari cara memakai sintaks strlen(...) untuk mengoper fungsi bernama sebagai nilai yang bisa disusun.
Buka → # Function CompositionPelajari cara merangkai fungsi kecil menjadi pipeline utuh dengan compose dan pipe.
Buka → # Functional vs Object-OrientedPelajari cara membandingkan gaya fungsional dan berorientasi objek lalu memilih pendekatan yang tepat.
Buka →Bab 20 Composer dan Dependency Management
Pelajari peran Composer dalam mengelola dependensi PHP untuk membangun proyek di atas pustaka yang andal.
Buka → # Menginstal ComposerPelajari cara menginstal Composer melalui installer resmi untuk mulai mengelola dependensi proyek PHP Anda.
Buka → # composer.jsonPelajari cara menyusun composer.json untuk mendeklarasikan dependensi, autoload, dan scripts proyek Anda.
Buka → # composer.lockPelajari cara composer.lock mengunci versi dependensi untuk memastikan build yang konsisten di semua mesin.
Buka → # Menginstal DependenciesPelajari cara menginstal, menggunakan, dan menghapus dependencies dengan perintah inti Composer.
Buka → # Version ConstraintsPelajari cara menulis version constraints agar Composer menginstal versi dependensi yang tepat.
Buka → # Dependency ResolutionPelajari cara Composer menyelesaikan kendala versi dari seluruh dependensi sekaligus, mengapa konflik terjadi, dan cara memperbaikinya.
Buka → # Autoloading dengan ComposerPelajari cara Composer menggabungkan aturan autoload dari seluruh dependensi menjadi satu vendor/autoload.php yang siap dioptimalkan.
Buka → # Composer ScriptsPelajari cara mendefinisikan shortcut perintah dan event hook di composer.json untuk mengotomatiskan tugas rutin proyek.
Buka → # Platform RequirementsPelajari cara mendeklarasikan syarat versi PHP dan ekstensi di composer.json agar proyek gagal cepat di lingkungan yang salah.
Buka → # Dependency AuditingPelajari cara memeriksa celah keamanan dependensi dengan composer audit dan mengunci pemeriksaan itu di pipeline CI.
Buka → # Private PackagesPelajari cara mendistribusikan paket privat lewat VCS, path, Satis, dan artifact repositories dengan autentikasi yang aman.
Buka → # Membuat Library PHPPelajari cara membangun library PHP sendiri mulai dari API, autoloading PSR-4, penomoran versi git, hingga publikasi ke Packagist.
Buka →Bab 21 Web Fundamentals
Pelajari cara kerja protokol HTTP sebagai fondasi komunikasi setiap aplikasi web PHP.
Buka → # Request dan ResponsePelajari cara membedah anatomi lengkap request dan response HTTP serta cara membacanya dari dalam skrip PHP.
Buka → # HTTP MethodsPelajari perbedaan GET, POST, PUT, PATCH, dan DELETE agar setiap request PHP Anda bermakna benar.
Buka → # HTTP Status CodesPelajari arti kode status 1xx sampai 5xx dan cara mengaturnya dari PHP agar API Anda jujur.
Buka → # HeadersPelajari cara mengirim dan membaca header HTTP dari PHP tanpa tersandung peringatan headers already sent.
Buka → # Content TypesPelajari cara mengirim Content-Type yang tepat dari PHP agar browser dan client memahami format respons Anda dengan benar.
Buka → # URLs dan Query StringsPelajari cara membedah URL dengan parse_url, memparsing query string dengan parse_str, dan membangunnya kembali dengan aman.
Buka → # PHP SuperglobalsPelajari isi $_GET, $_POST, $_COOKIE, $_FILES, dan $_SERVER pada request web nyata beserta batas kepercayaannya.
Buka → # Request LifecyclePelajari perjalanan request dari browser sampai respons kembali dan model memori per-request yang khas PHP.
Buka → # Web Server vs PHP RuntimePelajari pembagian tugas antara web server dan PHP runtime, cara kerja SAPI, serta perbedaan mod_php dan PHP-FPM.
Buka →Bab 22 Form Handling dan Validation
Pelajari cara membangun form HTML, menerima kirimanannya lewat $_GET dan $_POST, dan memprosesnya dengan aman.
Buka → # GET vs POSTPelajari cara memilih antara GET dan POST agar form Anda aman, bisa di-bookmark, dan berperilaku benar saat di-refresh.
Buka → # Membaca Form InputPelajari cara membaca input form dari $_POST dan $_GET dengan aman, dari field sederhana hingga input bertipe array.
Buka → # Validasi Server-SidePelajari cara membangun validasi di sisi server dengan PHP agar data buruk selalu tertolak sebelum diproses.
Buka → # Sanitasi vs ValidasiPelajari cara membedakan validasi dan sanitasi agar Anda tahu kapan input harus ditolak dan kapan cukup dirapikan.
Buka → # Validasi Email dan URLPelajari cara memvalidasi email dan URL dengan filter_var beserta batas-batasnya dan cara menyusun beberapa validator.
Buka → # Menangani Checkbox dan SelectPelajari cara menangani checkbox, radio, dan select di PHP, termasuk validasi terhadap daftar pilihan yang diizinkan.
Buka → # Menangani File UploadPelajari cara memproses upload berkas dari form dengan validasi menyeluruh sebelum menyimpannya secara aman.
Buka → # Menampilkan Validation ErrorsPelajari cara menampilkan pesan error validasi dengan pola error bag, old input, dan dukungan aksesibilitas.
Buka → # Post/Redirect/GetPelajari cara mencegah submit ganda pada form dengan pola Post/Redirect/Get dan respons 303 See Other.
Buka → # Form SecurityPelajari cara membangun pertahanan form dengan validasi server-side, honeypot, rate limiting, dan kehati-hatian terhadap data klien.
Buka →Bab 23 HTTP State: Sessions dan Cookies
Pelajari cara HTTP yang stateless bekerja dan mengapa cookies serta sessions diperlukan untuk mengingat pengguna.
Buka → # CookiesPelajari cara membuat, membaca, dan menghapus cookie dengan setcookie() untuk mengingat data pengguna di sisi browser.
Buka → # Cookie OptionsPelajari cara mengatur opsi secure, httponly, dan samesite pada cookie untuk memblokir berbagai serangan.
Buka → # SessionsPelajari cara menyimpan data pengguna di server dengan session_start() dan $_SESSION agar status login bertahan antar-request.
Buka → # Session ConfigurationPelajari cara membaca dan mengubah direktif php.ini untuk session agar sesuai kebutuhan produksi.
Buka → # Session RegenerationPelajari cara mengganti ID session dengan session_regenerate_id() untuk menangkal serangan session fixation.
Buka → # Flash MessagesPelajari cara menampilkan pesan sekali-pakai yang selamat dari redirect dengan pola flash messages berbasis session.
Buka → # Remember-Me PatternsPelajari cara menjaga login tetap aktif berminggu-minggu dengan token selector-validator yang aman di cookie dan database.
Buka → # Session SecurityPelajari cara mengamankan session dari fixation dan pencurian dengan cookie flags, timeout, dan minimisasi data.
Buka → # Stateless vs Stateful ApplicationsPelajari perbedaan aplikasi stateless dan stateful beserta konsekuensinya saat PHP harus dinaikkan skalanya secara horizontal.
Buka →Bab 24 Database dan SQL
Pelajari konsep tabel, primary key, relasi, index, dan ACID sebagai fondasi sebelum berbicara dengan database lewat PHP.
Buka → # Dasar SQLPelajari cara membaca dan mengubah data dengan SELECT, INSERT, UPDATE, DELETE, JOIN, dan fungsi agregat SQL.
Buka → # Database DriversPelajari cara memeriksa dan memilih ekstensi serta driver database yang tersedia di PHP.
Buka → # PDOPelajari cara mengakses berbagai database dengan API PDO yang seragam melalui query, exec, dan prepare.
Buka → # PDO ConnectionsPelajari cara membuka koneksi PDO dengan DSN yang tepat, menyetel opsi, dan menangani kegagalan koneksi.
Buka → # Prepared StatementsPelajari cara memisahkan struktur SQL dari data dengan prepared statements untuk keamanan dan performa.
Buka → # Parameter BindingPelajari cara mengikat nilai ke parameter prepared statement dengan bindValue, bindParam, dan array execute agar query aman dan konsisten.
Buka → # Fetching ResultsPelajari cara mengambil hasil query dengan fetch, fetchAll, dan fetchColumn serta memilih fetch mode yang tepat untuk tiap kebutuhan.
Buka → # TransactionsPelajari cara memakai beginTransaction, commit, dan rollBack agar rangkaian query database berjalan utuh atau batal bersama-sama.
Buka → # Transaction ManagementPelajari cara mengelola transaksi tingkat lanjut dengan savepoint, helper callback, isolation level, dan strategi menghindari deadlock.
Buka → # Database ErrorsPelajari cara menangani error database dengan mode error PDO, kode SQLSTATE, dan pembungkusan exception agar aplikasi tetap terkendali.
Buka → # SQL Injection PreventionPelajari cara mencegah SQL injection dengan prepared statements, allowlist nama kolom, dan escaping wildcard LIKE.
Buka → # SQLite dengan PHPPelajari cara memakai SQLite dari PHP: DSN berkas dan :memory:, PRAGMA foreign_keys, mode WAL, serta kapan SQLite layak dipakai di produksi.
Buka → # MySQL dengan PHPPelajari cara menyambungkan PHP ke MySQL: DSN utf8mb4, pilihan antara PDO dan mysqli, serta migrasi skema dari SQLite.
Buka → # PostgreSQL dengan PHPPelajari cara memakai PostgreSQL dari PHP: DSN pgsql, klausa RETURNING, upsert ON CONFLICT, schema, dan kapan database ini jadi pilihan terbaik.
Buka → # Repository PatternPelajari cara membungkus akses PDO dalam repository class, mengekstrak interface, dan membuat kode aplikasi bebas dari SQL.
Buka →Bab 25 Database Modeling dan Migrations
Pelajari cara mengubah requirements menjadi schema database yang rapi dan teruji.
Buka → # Primary dan Foreign KeysPelajari cara primary key dan foreign key menjaga identitas baris serta relasi antar tabel.
Buka → # NormalizationPelajari cara normalization menghilangkan redundancy dan anomali data langkah demi langkah.
Buka → # Constraints dan IntegrityPelajari cara NOT NULL, UNIQUE, CHECK, dan DEFAULT menjaga integritas data di level database.
Buka → # Schema MigrationsPelajari cara mengelola perubahan schema database dengan migration yang berversi dan terkontrol.
Buka → # Migration VersioningPelajari cara menamai migration dengan prefix timestamp dan melacak versi yang sudah diterapkan agar schema database selalu sinkron di seluruh tim.
Buka → # Migration RollbackPelajari cara membalikkan migration dengan skrip down yang aman agar perubahan schema yang keliru bisa ditarik tanpa kehilangan data.
Buka → # Seed DataPelajari cara mengisi database dengan data awal yang realistis untuk pengembangan dan data referensi idempoten untuk produksi.
Buka → # Database TestingPelajari cara menguji schema dan migration database dengan assertion sederhana agar perubahan berbahaya ketahuan sebelum sampai ke produksi.
Buka →Bab 26 Arsitektur Aplikasi
Pelajari cara memisahkan penanganan input, logika bisnis, dan output agar aplikasi PHP yang terus berkembang tetap mudah dirawat.
Buka → # Layered ArchitecturePelajari cara menyusun aplikasi PHP menjadi lapisan presentation, application, domain, dan data dengan arah dependensi satu arah.
Buka → # Controller-Service-RepositoryPelajari cara menerapkan layered architecture sebagai trio praktis controller, service, dan repository yang teruji tanpa HTTP.
Buka → # Dependency InjectionPelajari cara menyuntikkan dependency dari luar class agar kode PHP Anda longgar, mudah diuji, dan mudah diganti.
Buka → # Dependency InversionPelajari cara membalik arah dependensi agar modul tingkat tinggi berdiri di atas abstraksi, bukan di atas detail implementasi.
Buka → # Interfaces dan AbstractionsPelajari cara merancang kontrak yang tepat sempit, dimiliki konsumen, dan stabil agar implementasi bisa berganti tanpa guncangan.
Buka → # Domain ModelingPelajari cara memodelkan konsep bisnis sebagai entity, value object, dan aggregate yang membawa perilakunya sendiri.
Buka → # Data Transfer ObjectsPelajari cara mengemas data lintas lapisan dengan DTO readonly, mapper fromArray, dan penempatan validasi yang tepat.
Buka → # Configuration ManagementPelajari cara mengelola konfigurasi aplikasi PHP mulai dari array, environment variable, berkas .env, hingga objek konfigurasi bertipe.
Buka → # Application BootstrapPelajari cara menyusun proses bootstrap aplikasi PHP dari front controller hingga fungsi boot yang eksplisit dan booting malas.
Buka → # Memilih ArsitekturPelajari cara memilih arsitektur yang tepat sesuai ukuran proyek, faktor tim, dan sinyal evolusi agar tidak over- maupun under-engineering.
Buka →Bab 27 Design Patterns dan Prinsip
Pelajari lima prinsip desain SOLID untuk menulis class PHP yang longgar terhubung, mudah diuji, dan tahan terhadap perubahan.
Buka → # Single ResponsibilityPelajari cara menerapkan Single Responsibility Principle di PHP dengan merombak God class menjadi kelas-kecil yang berkolinaborasi dan mudah diuji.
Buka → # Open/Closed PrinciplePelajari cara memperluas perilaku program lewat class baru tanpa menyentuh kode lama yang sudah teruji.
Buka → # Liskov SubstitutionPelajari cara menjaga kontrak class dasar agar setiap subclass aman dipertukarkan tanpa kejutan.
Buka → # Interface SegregationPelajari cara memecah interface gemuk menjadi interface kecil yang fokus sesuai kebutuhan pemakainya.
Buka → # Dependency InversionPelajari cara membalik arah ketergantungan agar modul tingkat tinggi bergantung pada abstraksi, bukan implementasi.
Buka → # Factory PatternPelajari cara menyembunyikan proses pembuatan objek yang rumit lewat static factory dan factory method.
Buka → # Strategy PatternPelajari cara menukar algoritma di balik satu interface saat aplikasi berjalan untuk kode yang lentur dan mudah diuji.
Buka → # Adapter PatternPelajari cara menjembatani interface yang tidak cocok agar kode warisan dan SDK pihak ketiga tetap bisa dipakai.
Buka → # Decorator PatternPelajari cara menambah perilaku objek lewat pembungkus berlapis tanpa memicu ledakan subclass.
Buka → # Observer PatternPelajari cara menyiarkan kejadian ke banyak pendengar terdaftar agar produsen dan konsumen event saling lepas.
Buka → # Repository PatternPelajari cara memisahkan logika domain dari akses data lewat repository, query yang bernama, dan aggregate root.
Buka → # Unit of Work PatternPelajari cara menyatukan perubahan banyak entitas dalam satu transaksi database lewat unit of work dan change tracking.
Buka → # Menghindari OverengineeringPelajari cara menahan diri dari abstraksi spekulatif lewat YAGNI, aturan tiga, dan jalur evolusi sederhana-dulu.
Buka →Bab 28 REST API Development
Pelajari cara memahami REST sebagai gaya arsitektur: resource, HTTP verb, representasi, statelessness, dan model kematangannya.
Buka → # Resource ModelingPelajari cara menggali resource dari domain, merancang URL yang jujur, serta mengatur ID, slug, relasi, dan granularitas PATCH.
Buka → # Routing dan EndpointsPelajari cara memetakan kombinasi HTTP method dan path ke handler PHP dengan router sederhana yang bisa diuji.
Buka → # Request ParsingPelajari cara membaca dan mengurai JSON body, query string, dan header request dengan aman di API PHP.
Buka → # Response SerializationPelajari cara mengubah data PHP menjadi respons JSON yang konsisten, aman, dan nyaman dibaca klien.
Buka → # JSON APIsPelajari cara merakit handler API utuh yang menerima request, mengolah data, dan memancarkan respons JSON yang konsisten.
Buka → # Status Codes dan Error ResponsesPelajari cara memilih status code yang tepat untuk setiap operasi API dan merancang bentuk error response yang konsisten.
Buka → # Request ValidationPelajari cara membangun lapisan validasi request yang teruji dengan aturan per field dan respons 422 yang informatif.
Buka → # Pagination, Filtering, dan SortingPelajari cara menerapkan pagination, filtering, dan sorting yang aman dari SQL injection pada endpoint daftar API Anda.
Buka → # API VersioningPelajari cara mengelola beberapa versi API dengan strategi URL, header, dan content negotiation tanpa memutus klien lama.
Buka → # OpenAPI DocumentationPelajari cara menulis dokumentasi OpenAPI yang lengkap dan menjaga sinkronnya dengan router melalui test otomatis.
Buka → # Rate LimitingPelajari cara membatasi laju permintaan API dengan fixed window, sliding window, dan token bucket untuk menjaga stabilitas layanan.
Buka → # IdempotencyPelajari cara membuat operasi POST aman diulang dengan pola Idempotency-Key agar klien yang gagal jaringan tidak menimbulkan efek ganda.
Buka → # API TestingPelajari cara menguji REST API PHP secara berlapis, dari handler murni dengan assertion hingga test double dan database SQLite in-memory.
Buka →Bab 29 Authentication dan Authorization
Pelajari perbedaan mendasar antara pembuktian identitas dan pemberian hak akses agar 401 dan 403 tidak pernah tertukar.
Buka → # Password HashingPelajari cara menyimpan kata sandi dengan password_hash dan password_verify agar database yang bocor tidak serta-merta membuka semua akun.
Buka → # Registrasi PenggunaPelajari cara membangun alur registrasi yang aman mulai dari validasi email, aturan username, hashing password, hingga penanganan email duplikat.
Buka → # Login dan LogoutPelajari cara membangun alur login dan logout PHP: verifikasi password, pesan error generik, session, logout semua perangkat, hingga rate limiting.
Buka → # Session-Based AuthenticationPelajari cara membangun autentikasi berbasis session: menyimpan user_id, resolusi current user, guard halaman privat, dan pencegahan session fixation.
Buka → # Remember-MePelajari cara mengintegrasikan token remember-me ke alur autentikasi: auto-login dari cookie, masa berlaku token, dan invalidasi saat password berubah.
Buka → # Password ResetPelajari cara membangun alur reset password dengan token sekali pakai: permintaan, tautan email, verifikasi hash, jendela waktu, dan pencegahan user enumeration.
Buka → # Email VerificationPelajari cara membangun alur verifikasi email dengan token sekali pakai untuk memastikan alamat email benar-benar milik pengguna.
Buka → # Role-Based Access ControlPelajari cara menerapkan role-based access control untuk mengatur peran dan hak akses pengguna di aplikasi PHP.
Buka → # Permission ModelingPelajari cara memodelkan permission sebagai satuan hak akses yang lebih halus dan fleksibel dibandingkan role.
Buka → # API Token AuthenticationPelajari cara mengautentikasi klien API dengan personal access token yang di-hash, ber-scope, dan dapat dicabut.
Buka → # OAuth2 dan OpenID ConnectPelajari cara kerja OAuth2 dan OpenID Connect untuk login pihak ketiga dan delegasi akses tanpa mengelola sandi tambahan.
Buka → # Multi-Factor AuthenticationPelajari cara menambah faktor kedua autentikasi dengan TOTP, kode cadangan, dan WebAuthn agar kata sandi yang dicuri tidak cukup untuk membuka akun.
Buka → # Authentication SecurityPelajari checklist keamanan autentikasi lengkap: kebijakan kata sandi, rate limiting, pesan galat generik, anti-enumerasi, dan pencatatan peristiwa login.
Buka →Bab 30 Web Security
Pelajari prinsip penulisan kode yang aman — validasi input, escape output, least privilege, defense in depth, fail securely — sebelum membedah serangan satu per satu.
Buka → # Output EscapingPelajari cara mengubah data menjadi aman saat ditampilkan: htmlspecialchars untuk HTML, json_encode untuk JavaScript, dan rawurlencode untuk URL.
Buka → # Cross-Site ScriptingPelajari anatomi serangan XSS — reflected, stored, dan DOM — beserta pertahanan berlapisnya dari escaping hingga CSP dan cookie HttpOnly.
Buka → # Cross-Site Request ForgeryPelajari anatomi serangan CSRF dan kerangka pertahanannya untuk melindungi aksi sensitif pengguna.
Buka → # SQL InjectionPelajari sudut pandang penyerang dalam SQL injection untuk memahami cara data bisa membaca, mengubah, dan menghapus database Anda.
Buka → # Command InjectionPelajari cara input pengguna membajak perintah shell dan cara membangun pemanggilan proses eksternal yang aman.
Buka → # Path TraversalPelajari cara serangan ../ memanjat keluar direktori dan cara membangun pertahanan path yang kokoh.
Buka → # File Upload SecurityPelajari cara memvalidasi dan menyimpan berkas upload agar fitur ini tidak menjadi pintu masuk penyerang.
Buka → # Session FixationPelajari alur serangan session fixation dan kombinasi pertahanan yang memutus rantainya.
Buka → # ClickjackingPelajari cara mencegah clickjacking dengan header X-Frame-Options dan frame-ancestors yang dipancarkan dari PHP.
Buka → # Security HeadersPelajari cara memancarkan set lengkap security headers dari PHP dengan pola middleware yang mudah diuji.
Buka → # CORSPelajari cara mengizinkan permintaan lintas domain secara aman dengan CORS dan penanganan preflight di PHP.
Buka → # CSRF TokensPelajari cara membuat, menyematkan, dan memvalidasi token CSRF dengan random_bytes dan hash_equals di PHP.
Buka → # Content Security PolicyPelajari cara membangun dan meluncurkan Content Security Policy sebagai lapisan kedua pertahanan XSS di PHP.
Buka → # Secrets ManagementPelajari cara mengelola secret seperti API key dan password database dengan variabel lingkungan agar tidak pernah bocor ke kode dan riwayat git.
Buka → # Dependency SecurityPelajari cara menilai risiko paket Composer sebelum diadopsi dan menjaga rantai pasokan dependensi aplikasi tetap aman.
Buka → # Security ChecklistPelajari cara menyusun dan menggunakan checklist keamanan agar pemeriksaan penting tidak terlewat saat code review dan review berkala.
Buka →Bab 31 Cookies, Headers, dan Caching
Pelajari cara mengirim HTTP header dengan header() secara benar, dari aturan sebelum output hingga pola kumpulan header yang mudah diuji.
Buka → # Response Status CodesPelajari cara mengatur response status code dengan http_response_code() dan memasangkannya dengan body serta redirect yang tepat.
Buka → # Cookie ConfigurationPelajari cara mengonfigurasi cookie dari sisi respons PHP, dari opsi lengkap setcookie(), perhitungan kedaluwarsa, penghapusan, cakupan path dan domain, hingga cookie sesi yang aman.
Buka → # Cache-ControlPelajari cara menyusun header Cache-Control untuk mengendalikan cache browser, proxy, dan CDN serta melindungi halaman sensitif dari penyimpanan.
Buka → # ETag dan Conditional RequestsPelajari cara membangun ETag sebagai sidik jari konten dan menangani If-None-Match serta If-Modified-Since agar respons 304 menghemat bandwidth.
Buka → # File Download ResponsesPelajari cara membangun respons unduhan berkas dengan Content-Disposition, streaming readfile dan fpassthru, penamaan non-ASCII RFC 5987, hingga pola X-Sendfile.
Buka → # Redirect ResponsesPelajari cara membangun respons redirect yang benar, dari pemilihan kode dan Location relatif, pola POST-Redirect-GET dengan flash data, deteksi loop, hingga validasi open redirect.
Buka → # Response CompressionPelajari cara mengompresi respons HTTP dengan gzip dari PHP, menegosiasikan lewat Accept-Encoding, mengetahui apa yang tidak boleh dikompresi, dan mengirim Vary dengan benar.
Buka →Bab 32 Email dan Notifications
Pelajari cara kerja perjalanan email dari aplikasi sampai kotak masuk agar email yang Anda kirim benar-benar sampai ke tujuan.
Buka → # Mengirim Email dengan SMTPPelajari cara menyusun pesan MIME dan berbicara dengan server SMTP untuk menguasai mekanisme pengiriman email yang sesungguhnya.
Buka → # Email LibrariesPelajari cara memilih dan memakai library email seperti Symfony Mailer, PHPMailer, dan Laminas Mail untuk pengiriman tanpa pusing detail MIME.
Buka → # HTML EmailPelajari cara menyusun HTML email dengan multipart, tabel, dan CSS inline agar tampil rapi di semua klien email.
Buka → # Email TemplatesPelajari cara menyusun template email dengan placeholder agar isi pesan terorganisasi, teruji, dan aman dari data pengguna.
Buka → # Email QueueingPelajari cara menampung email dalam queue agar respons aplikasi tetap cepat dan pengiriman lebih andal.
Buka → # Retry dan Delivery FailuresPelajari cara mengklasifikasikan kegagalan pengiriman email dan menyusun strategi retry dengan backoff yang aman.
Buka → # Notification PreferencesPelajari cara menghormati preferensi notifikasi pengguna per kanal dan tipe pesan sebelum mengirim apa pun.
Buka → # Email SecurityPelajari cara mengamankan email aplikasi Anda dengan SPF, DKIM, DMARC, header yang bersih, dan tautan bertanda tangan.
Buka →Bab 33 Caching dan Performance
Pelajari cara memaknai performa aplikasi PHP dengan benar agar setiap optimasi yang Anda lakukan berdampak dan terukur.
Buka → # Profiling PHPPelajari cara menemukan bagian kode PHP yang paling memakan waktu dengan timer manual, penghitung panggilan, dan Xdebug.
Buka → # BenchmarkingPelajari cara merancang micro-benchmark yang jujur dengan hrtime untuk membandingkan dua implementasi PHP secara adil.
Buka → # Opcode CachePelajari cara kerja OPcache dalam menyimpan bytecode PHP agar aplikasi tidak mengompilasi ulang semua berkas di setiap permintaan.
Buka → # Application CachingPelajari cara menyimpan hasil komputasi mahal dengan cache aplikasi berbasis TTL dan kunci yang dirancang benar.
Buka → # Cache InvalidationPelajari cara menjaga isi cache tetap segar dengan TTL, invalidasi berbasis event, key versioning, dan pola penulisan write-through.
Buka → # Redis CachingPelajari cara menggunakan Redis sebagai cache eksternal: memilih client, menyiapkan koneksi, serialisasi nilai, dan pola read-through.
Buka → # Query OptimizationPelajari cara mengoptimalkan query database: menghitung query per request, membasmi masalah N+1, memanfaatkan indeks, dan paginasi keyset.
Buka → # Reducing Memory UsagePelajari cara menekan pemakaian memori PHP dengan generator, fetch bertahap, streaming berkas, dan memahami siklus referensi.
Buka → # Streaming Large ResponsesPelajari cara mengirim berkas besar dan ekspor CSV dengan memori kecil melalui readfile, generator, output buffering, dan flush.
Buka → # Performance TestingPelajari cara menguji performa aplikasi PHP secara terukur dengan load test, statistik p95/p99, anggaran performa di CI, dan deteksi regresi.
Buka →Bab 34 Asynchronous Processing
Pelajari cara memindahkan tugas lambat ke background job agar respons aplikasi tetap cepat dan andal.
Buka → # Job QueuesPelajari cara membangun job queue berbasis database yang andal dengan delayed jobs, visibility timeout, dan penanganan job gagal.
Buka → # Message BrokersPelajari cara message broker seperti RabbitMQ merutekan pesan antar-layanan dengan pola exchange, queue, dan binding.
Buka → # Scheduled TasksPelajari cara menjalankan tugas terjadwal di PHP dengan cron, runner berjadwal internal, dan kunci berkas anti tumpang tindih.
Buka → # Retry, Backoff, dan TimeoutsPelajari cara menyusun kebijakan retry dengan exponential backoff, jitter, dan anggaran timeout agar job gagal pulih tanpa membanjiri sistem.
Buka → # Idempotent JobsPelajari cara membuat job yang aman dijalankan ulang dengan upsert, tabel deduplikasi, dan pola uji run-twice.
Buka → # Job Failure HandlingPelajari cara mengklasifikasikan, merekam, dan menangani kegagalan job agar sistem queue tetap sehat dan dapat dipulihkan.
Buka → # Process ManagementPelajari cara menjalankan dan mengendalikan proses PHP terpisah dengan proc_open, exit code, sinyal, fork, dan supervisor.
Buka → # Async PHP Runtime OverviewPelajari cara kerja event loop, Fiber, dan runtime async PHP untuk memilih strategi konkurensi yang tepat.
Buka →Bab 35 Testing dan Quality Assurance
Pelajari cara berpikir seperti penguji: piramida pengujian, pola arrange-act-assert, dan ciri tes yang baik.
Buka → # Unit TestingPelajari cara menulis unit test pertama Anda dengan assertion polos dan PHPUnit untuk fungsi murni.
Buka → # Menginstal PHPUnitPelajari cara menginstal PHPUnit melalui berkas PHAR atau Composer untuk mulai menguji kode PHP secara otomatis.
Buka → # Menulis PHPUnit TestsPelajari cara menulis kelas test PHPUnit: konvensi penamaan, assertion dasar, siklus hidup setUp/tearDown, dan exit code.
Buka → # AssertionsPelajari cara memilih dan menulis assertion PHPUnit yang tepat, dari assertSame sampai expectException dan assertion komposit.
Buka → # Data ProvidersPelajari cara menguji banyak kasus sekaligus dengan data provider PHPUnit dan kasus bernama yang mudah didiagnosis.
Buka → # Test DoublesPelajari cara mengganti dependensi nyata dengan dummy, stub, spy, dan fake buatan tangan agar unit test berjalan cepat dan deterministik.
Buka → # MockingPelajari cara mengisolasi dependensi dengan mock bawaan PHPUnit, mulai dari createMock, expectation, constraint argumen, hingga mengenali kapan mocking justru merugikan.
Buka → # Integration TestingPelajari cara menguji beberapa komponen bekerja sama lewat integration test dengan seam yang disuntikkan, SQLite, test data builder, dan organisasi suite terpisah.
Buka → # Database TestingPelajari cara menguji repository dan query SQL dengan PHPUnit memakai SQLite :memory:, seeding fixture, assertion hasil query, dan pola transaction rollback.
Buka → # HTTP TestingPelajari cara menguji HTTP handler tanpa web server memakai objek Request dan Response murni, helper bergaya supertest, cookie tersuntik, hingga uji asap dengan php -S dan curl.
Buka → # End-to-End TestingPelajari cara menyusun pengujian end-to-end dengan server sungguhan untuk membuktikan seluruh tumpukan aplikasi bekerja sebagai satu kesatuan.
Buka → # Code CoveragePelajari cara membaca dan menafsirkan code coverage sebagai alarm asap kualitas, bukan angka yang dipuja.
Buka → # Mutation TestingPelajari cara mengukur kekuatan suite test dengan mutation testing: suntikkan bug kecil satu per satu dan pastikan setiap mutan mati.
Buka → # Static AnalysisPelajari cara memasang static analysis sebagai gerbang pertama pipeline QA untuk menangkap bug sebelum kode sempat dijalankan.
Buka → # Coding StandardsPelajari cara menegakkan coding standards secara otomatis dengan PHP-CS-Fixer dan PHP_CodeSniffer agar seluruh tim menulis kode bergaya sama.
Buka → # Continuous IntegrationPelajari cara merangkai lint, static analysis, dan test menjadi pipeline continuous integration otomatis dengan GitHub Actions.
Buka →Bab 36 Debugging dan Observability
Pelajari cara membaca anatomi stack trace PHP untuk menelusuri akar masalah hingga ke baris sumbernya.
Buka → # Debugging dengan XdebugPelajari cara memasang dan mengonfigurasi Xdebug untuk step debugging, profil, dan output diagnostik yang lebih kaya.
Buka → # Breakpoints dan Watch ExpressionsPelajari cara menghentikan eksekusi di titik yang tepat dengan breakpoint dan mengawasi nilai dengan watch expressions.
Buka → # LoggingPelajari cara membangun logging aplikasi PHP yang persisten, mulai dari logger berkas sederhana hingga format JSON lines.
Buka → # Structured LoggingPelajari cara menerapkan structured logging dengan field bernama, correlation ID, dan parsing grep/jq untuk log yang benar-benar bisa ditelusuri.
Buka → # Log Levels dan ContextPelajari cara memilih level log yang tepat dan menyertakan context terstruktur agar setiap kejadian mudah ditelusuri.
Buka → # Error Reporting ConfigurationPelajari cara mengonfigurasi error reporting untuk development, staging, dan production agar error selalu tercatat tanpa membocorkan detail.
Buka → # Application MetricsPelajari cara mengukur kesehatan aplikasi lewat metrics counter, gauge, dan histogram dengan format ekspor Prometheus.
Buka → # TracingPelajari cara mengikuti perjalanan satu request lintas layanan menggunakan trace, span, dan korelasi log.
Buka → # Production DiagnosticsPelajari cara mendiagnosis insiden produksi berbasis bukti: membaca log dengan aman, membandingkan canary, dan menulis postmortem.
Buka →Bab 37 Coding Standards dan Maintainability
Pelajari cara menerapkan coding standards di tim PHP untuk menjaga konsistensi dan mempercepat kolaborasi.
Buka → # PSR-1 dan PSR-12Pelajari cara mematuhi aturan dasar PSR-1 dan gaya pengodean lengkap PSR-12 dengan contoh sesuai dan tidak sesuai.
Buka → # PSR-4Pelajari cara PSR-4 memetakan namespace ke struktur berkas agar class PHP dapat dimuat otomatis tanpa require manual.
Buka → # Naming ConventionsPelajari cara menamai class, method, variabel, dan konstanta PHP agar maksud kode terbaca jelas sejak baris pertama.
Buka → # Clean CodePelajari cara menerapkan prinsip clean code agar fungsi PHP kecil, jujur, dan bebas kejutan bagi pembacanya.
Buka → # RefactoringPelajari cara menata ulang kode tanpa mengubah perilakunya untuk membuat setiap perubahan berikutnya semakin murah.
Buka → # Code ReviewPelajari cara melakukan review kode yang terstruktur untuk menemukan cacat lebih awal dan membangun budaya tim yang sehat.
Buka → # Technical DebtPelajari cara mengenali, mencatat, dan melunasi technical debt untuk menjaga kecepatan tim dalam jangka panjang.
Buka → # Dependency ManagementPelajari cara mengelola dependensi secara disiplin untuk menjaga aplikasi tetap ringan, sehat, dan mudah diperbarui.
Buka → # Maintaining Backward CompatibilityPelajari cara menjaga backward compatibility dengan SemVer, deprecation, dan shim untuk merilis perubahan tanpa memutus pengguna.
Buka →Bab 38 CLI dan Automation
Pelajari cara membuat dan menjalankan skrip PHP langsung dari terminal untuk berbagai tugas otomasi.
Buka → # Command-Line ArgumentsPelajari cara membaca, memilah, dan memvalidasi command-line arguments dengan $argv dan getopt.
Buka → # stdin, stdout, dan stderrPelajari cara mengelola tiga stream standar agar skrip CLI Anda rapi, mudah dipipakan, dan ramah otomasi.
Buka → # Exit CodesPelajari cara memakai exit codes dengan benar agar skrip PHP Anda dapat dipercaya oleh shell, pipeline, dan CI.
Buka → # Console ApplicationsPelajari cara menyusun skrip PHP menjadi aplikasi console utuh dengan dispatch perintah, output bantuan terstruktur, dan exit code yang konsisten.
Buka → # Scheduled JobsPelajari cara menjadwalkan skrip PHP dengan cron, mencegah tumpang tindih dengan flock, mencatat output job, dan menguji logika terjadwalnya.
Buka → # Filesystem AutomationPelajari cara menulis tool PHP yang mengganti nama berkas secara massal, merotasi arsip, membersihkan berkas tua, dan melapor hasilnya dengan aman.
Buka → # SubprocessesPelajari cara memanggil program eksternal dari PHP dengan proc_open: mengelola pipe stdout dan stderr, meneruskan environment, membatasi waktu eksekusi, dan mengamankan argumen.
Buka → # Configuration FilesPelajari cara mengelola berkas konfigurasi untuk tool CLI, dari pencarian lokasi dan penggabungan default hingga validasi dan penanganan rahasia.
Buka → # Distributing CLI ToolsPelajari cara mengemas dan mendistribusikan tool CLI PHP Anda, dari berkas phar dan pemasangan Composer hingga konvensi --version dan README.
Buka →Bab 39 Data Processing
Pelajari cara membaca dan menulis berkas CSV dengan fgetcsv dan fputcsv untuk pertukaran data yang aman dan efisien.
Buka → # Membaca dan Menulis JSONPelajari cara membaca dan menulis JSON dengan json_decode, json_encode, dan json_validate untuk pertukaran data yang andal.
Buka → # Membaca XMLPelajari cara membaca dan mem-parsing dokumen XML dengan SimpleXML, DOMDocument, dan XMLReader secara aman.
Buka → # Parsing Log FilesPelajari cara mem-parsing berkas log akses web dengan regex, agregasi status, dan generator untuk berkas besar.
Buka → # Data ValidationPelajari cara memvalidasi dataset sebelum diproses, dari kelengkapan kolom, tipe data, hingga koherensi antar baris.
Buka → # Data TransformationPelajari cara mentransformasi data mentah menjadi data bersih, bertipe benar, dan siap pakai dengan PHP.
Buka → # Batch ProcessingPelajari cara memproses data dalam jumlah besar secara bertahap dengan memori terkendali dan proses yang dapat dilanjutkan.
Buka → # Streaming Large FilesPelajari cara mengolah berkas besar di PHP dengan pola streaming yang membaca sedikit demi sedikit tanpa membengkakkan memori.
Buka → # Data Import/ExportPelajari cara membangun alur import dan export data yang andal, idempoten, dan mudah diaudit dengan PHP.
Buka →Bab 40 Internationalization dan Encoding
Pelajari cara kerja character encoding dan mengelola UTF-8 dengan benar agar teks tidak rusak di PHP.
Buka → # Unicode dan UTF-8Pelajari cara menetapkan UTF-8 sebagai encoding baku di seluruh batas aplikasi PHP, dari input dan output hingga penyimpanan.
Buka → # Locale-Aware FormattingPelajari cara memformat angka dan tanggal menurut locale pengguna dengan formatter murni PHP yang andal di semua lingkungan.
Buka → # Translation FilesPelajari cara menyusun berkas terjemahan sebagai peta kunci ke pesan, lengkap dengan fallback, parameter, dan kunci bersarang.
Buka → # PluralizationPelajari cara memilih bentuk pesan sesuai jumlah agar tampilan benar di setiap bahasa yang Anda dukung.
Buka → # Currency dan Number FormattingPelajari cara memformat angka dan mata uang per locale serta menyimpan nilai uang dengan benar di PHP.
Buka → # Date/Time LocalizationPelajari cara menampilkan tanggal dan waktu sesuai locale pembaca tanpa mengorbankan zona waktu.
Buka → # Multilingual Application DesignPelajari cara merancang arsitektur aplikasi multi-bahasa dari deteksi bahasa hingga rantai fallback terjemahan.
Buka →Bab 41 Deployment dan Infrastructure
Pelajari cara menyetel konfigurasi PHP untuk produksi agar error tercatat, rahasia tersembunyi, dan performa maksimal.
Buka → # Environment VariablesPelajari cara membaca dan mengelola environment variables agar konfigurasi aplikasi PHP terpisah dari kode.
Buka → # Managing SecretsPelajari cara menyimpan, memutar, dan melindungi secrets aplikasi PHP agar kredensial tidak bocor ke tempat yang salah.
Buka → # PHP-FPMPelajari cara kerja dan konfigurasi PHP-FPM untuk menjalankan aplikasi PHP secara stabil di server produksi.
Buka → # Nginx dan PHPPelajari cara mengonfigurasi Nginx sebagai web server dan reverse proxy yang meneruskan permintaan PHP ke PHP-FPM.
Buka → # Apache dan PHPPelajari cara menjalankan PHP di Apache melalui mod_php dan mod_proxy_fcgi serta mengelola .htaccess dan virtual host.
Buka → # Docker dan PHPPelajari cara mengemas aplikasi PHP ke dalam image Docker agar berjalan identik di development dan production.
Buka → # Deployment WorkflowsPelajari cara membangun alur deployment yang atomik, teruji, dan bisa di-rollback dalam hitungan detik.
Buka → # Database DeploymentPelajari cara menjalankan schema migration dengan aman saat deploy: urutan expand-contract, cadangan, dan pemulihan kegagalan.
Buka → # Health ChecksPelajari cara merancang endpoint health check yang membedakan liveness dan readiness serta terintegrasi dengan load balancer.
Buka → # Graceful ShutdownPelajari cara mematikan proses PHP dengan anggun: drain request in-flight, tangani SIGTERM, dan selesaikan pekerjaan berjalan.
Buka → # Zero-Downtime DeploymentPelajari cara merilis versi baru tanpa memutus satu pun request pengguna dengan symlink, blue-green, rolling, dan canary.
Buka → # Production Readiness ChecklistPelajari cara menyusun checklist kesiapan produksi lengkap beserta runbook rilis, smoke test otomatis, dan latihan rollback.
Buka →Bab 42 Framework Development
Pelajari cara memisahkan model, view, dan controller serta membangun siklus request MVC mini dalam PHP murni.
Buka → # Membuat RouterPelajari cara membangun router PHP sendiri dari registrasi rute, parameter pola, dispatch, hingga penanganan 404 dan 405.
Buka → # Request-Response AbstractionsPelajari cara membangun abstraksi Request dan Response immutable yang teruji sebagai fondasi framework mini Anda.
Buka → # MiddlewarePelajari cara membangun pipeline middleware berlapis untuk memproses request dan response secara berurutan.
Buka → # Controller LayerPelajari cara merancang controller yang ramping agar logika HTTP dan logika bisnis tetap terpisah rapi.
Buka → # Template RenderingPelajari cara membangun mesin template PHP sendiri dengan escaping, layout, dan section yang aman.
Buka → # Dependency ContainerPelajari cara membangun dependency container agar penyambungan objek tidak lagi ditulis manual.
Buka → # Configuration SystemPelajari cara membangun sistem konfigurasi berlapis dengan dot access, override environment, dan validasi saat boot.
Buka → # Exception Handling LayerPelajari cara membangun lapisan penahanan exception global untuk menjaga pengguna tetap menerima respons rapi saat terjadi kesalahan.
Buka → # Routing ParametersPelajari cara menangkap parameter dinamis dari URL, memvalidasinya, hingga menghasilkan URL kembali dari definisi route.
Buka → # Framework TestingPelajari cara menguji framework buatan sendiri mulai dari assertion router hingga test client yang menembus seluruh stack.
Buka → # Batasan Framework Buatan SendiriPelajari batasan jujur framework buatan sendiri, biaya pemeliharaannya, dan kapan saatnya beralih ke framework matang.
Buka →Bab 43 Framework Ecosystem
Pelajari alasan framework PHP ada, apa yang mereka standarisasi, dan peta lanskap Laravel, Symfony, hingga Slim.
Buka → # Laravel FundamentalsPelajari cara memasang Laravel, membaca struktur proyeknya, dan memakai Artisan, file .env, serta facade untuk memulai pengembangan dengan cepat.
Buka → # Laravel RoutingPelajari cara mendefinisikan route, parameter, named route, grouping, hingga rate limiting di Laravel untuk mengatur seluruh pintu masuk aplikasi.
Buka → # Laravel EloquentPelajari cara memakai Eloquent untuk memetakan tabel database ke model, relasi, query, dan eager loading tanpa menulis SQL manual.
Buka → # Laravel ValidationPelajari cara memvalidasi input di Laravel mulai dari aturan bawaan, Form Request, hingga Rule Object untuk menjaga kualitas data aplikasi.
Buka → # Laravel AuthenticationPelajari cara membangun sistem login Laravel lengkap dari starter kit, guard, middleware auth, policy, hingga token API Sanctum.
Buka → # Symfony FundamentalsPelajari cara membangun aplikasi dengan Symfony: filosofi komponen, routing, controller, services, autowiring, hingga siklus rilis LTS.
Buka → # Symfony ComponentsPelajari cara memakai komponen Symfony secara mandiri melalui Composer untuk memperkuat aplikasi PHP apa pun.
Buka → # Slim FrameworkPelajari cara membangun API ringan dengan Slim Framework di atas standar PSR-7 dan middleware PSR-15.
Buka → # Memilih Framework PHPPelajari cara menimbang faktor tim, proyek, dan ekosistem untuk memilih framework PHP secara rasional.
Buka →Bab 44 Modern Web Architecture
Pelajari cara membangun aplikasi server-rendered yang cepat, SEO-friendly, dan minim JavaScript dengan fragmen HTML.
Buka → # Monolith vs MicroservicesPelajari trade-off jujur antara monolith dan microservices serta posisi nyata aplikasi PHP di antara keduanya.
Buka → # Modular MonolithPelajari cara membagi monolith menjadi modul dengan batas tegas agar kode tetap rapi dan siap diekstrak.
Buka → # API-First DevelopmentPelajari cara merancang kontrak API sebelum menulis UI agar semua konsumen bekerja paralel.
Buka → # Backend-for-FrontendPelajari cara menyusun lapisan API khusus per klien agar web dan mobile mendapat respons yang pas kebutuhan.
Buka → # Event-Driven ArchitecturePelajari cara memakai event untuk melepaskan kopling antar komponen dengan event bus dan pola outbox.
Buka → # Domain-Driven DesignPelajari cara memetakan bahasa bisnis ke kode dengan bounded context dan value object agar model domain tetap kaya.
Buka → # Architecture Decision RecordsPelajari cara mendokumentasikan keputusan arsitektur dengan ADR agar alasan di balik desain tidak hilang.
Buka →Bab 45 Proyek PHP
Bangun kalkulator interaktif berbasis terminal: struktur program, operasi aritmatika, validasi input, hingga error handling dan testing.
Lihat proyek → # Proyek: Pengelola Daftar TugasBangun aplikasi manajemen tugas berbasis CLI dengan penyimpanan JSON, validasi, error handling, refactor berorientasi objek, dan testing.
Lihat proyek → # Proyek: Aplikasi KontakBangun aplikasi kontak berbasis database: desain schema SQLite, operasi CRUD, pencarian, validasi integritas, dan testing repository.
Lihat proyek → # Proyek: Website BlogBangun website blog utuh dengan PHP murni: routing, template, database, admin CRUD, authentication, keamanan, testing, dan deployment.
Lihat proyek → # Proyek: REST API Manajemen TugasBangun REST API JSON dari nol: fondasi, routing, repository database, validasi, token authentication, testing, OpenAPI, dan deployment.
Lihat proyek → # Proyek: Sistem InventarisBangun sistem inventaris: desain database produk-kategori, stock movements, transaksi, laporan, pencarian, testing, dan deployment.
Lihat proyek → # Proyek: Sistem AutentikasiBangun sistem autentikasi utuh: user schema, registrasi dengan password hashing, login session, role permission, reset, dan security testing.
Lihat proyek → # Proyek: Aplikasi Keuangan PribadiBangun aplikasi pencatat keuangan: domain model, akun-kategori, transaksi, budget berulang, laporan, import-export, testing, deployment.
Lihat proyek → # Proyek: Sistem PemesananBangun sistem pemesanan end-to-end: pelanggan-produk, order dan item, order processing, transaksi inventaris, payment, reporting, testing.
Lihat proyek → # Proyek: Aplikasi SaaS Multi-TenantBangun aplikasi SaaS multi-tenant: domain tenant, isolasi data, membership permission, billing subscription, audit, background jobs, deployment.
Lihat proyek → # Proyek: Library PHP ReusableRilis library PHP Anda sendiri: struktur package, namespace PSR-4, public API, unit testing, static analysis, build, dan publishing.
Lihat proyek →