KelasIT.com
Programming

Mengenal PHP Modern

Tinjauan fitur PHP 8 yang mengubah cara menulis PHP: named arguments, constructor promotion, union types, match, nullsafe, enum, readonly, attributes, serta praktik modern dengan Composer, PSR, dan static analysis.

Mengenal PHP Modern

PHP yang kamu temui di tutorial lama dan PHP yang ditulis tim profesional hari ini sudah sangat berbeda. Sejak PHP 7 dan terutama PHP 8, bahasa ini mendapat sistem tipe yang lebih kuat, sintaks yang ringkas, dan performa jauh lebih baik. Artikel ini merangkum fitur-fitur yang paling berdampak, lengkap dengan contoh.

Mengapa "PHP modern" penting?

  • Lebih aman: tipe data eksplisit menangkap bug sebelum menjadi masalah produksi.
  • Lebih ringkas: banyak kode boilerplate hilang.
  • Lebih cepat: PHP 7 memangkas waktu eksekusi hampir setengahnya dibanding PHP 5.6, dan PHP 8 menambah JIT dan peningkatan lain.
  • Didukung ekosistem: framework terkini (Laravel, Symfony) membutuhkan PHP 8.1+.

Fitur-fitur yang wajib kamu kenal

1. Type declarations (tipe parameter dan return)

function hitungDiskon(float $harga, int $persen): float
{
    return $harga * $persen / 100;
}

Tambahkan declare(strict_types=1); di awal file agar PHP tidak diam-diam mengonversi tipe (misalnya string "10" menjadi angka).

2. Union types dan nullable (PHP 8.0)

function cari(int|string $id): ?Pengguna   // boleh null
{
    // ...
}

3. Named arguments (8.0)

Menyebut nama parameter membuat pemanggilan mudah dibaca dan urutan bebas:

buatUser(nama: 'Sari', aktif: true, peran: 'admin');

4. Constructor property promotion (8.0)

Menghapus kode berulang saat mendefinisikan properti:

// Dulu: deklarasi properti + parameter + assignment
// Sekarang:
class Produk
{
    public function __construct(
        public string $nama,
        public float $harga,
        public int $stok = 0,
    ) {}
}

5. match: switch yang lebih baik (8.0)

match mengembalikan nilai, memakai perbandingan ketat (===), dan melempar error jika tak ada yang cocok:

$label = match ($status) {
    'draft'   => 'Konsep',
    'terbit'  => 'Dipublikasikan',
    default   => 'Tidak diketahui',
};

6. Nullsafe operator ?-> (8.0)

$kota = $pengguna?->alamat?->kota;   // null jika salah satu null

7. Enum (8.1)

Menggantikan konstanta string yang rawan salah ketik:

enum Status: string
{
    case Draft = 'draft';
    case Terbit = 'terbit';

    public function label(): string
    {
        return match ($this) {
            self::Draft  => 'Konsep',
            self::Terbit => 'Terbit',
        };
    }
}

$s = Status::from('terbit');
echo $s->label();

8. Readonly properties (8.1) dan readonly class (8.2)

Properti yang hanya bisa diisi sekali, cocok untuk objek nilai (value object):

final class Uang
{
    public function __construct(
        public readonly int $jumlah,
        public readonly string $mata_uang,
    ) {}
}

9. Attributes (8.0)

Metadata terstruktur yang menggantikan banyak anotasi di komentar:

#[Route('/produk', methods: ['GET'])]
public function index() {}

10. First-class callable syntax (8.1)

$panjang = strlen(...);            // closure dari fungsi
$fn = $objek->metode(...);

11. Fungsi string baru dan lainnya

str_contains(), str_starts_with(), str_ends_with() menggantikan trik strpos(...) !== false yang membingungkan. Ada pula operator spread untuk array dengan key string, never return type, dan new di dalam initializer.

Ringkasan per versi

VersiSorotan utama
8.0Named args, union types, match, nullsafe, attributes, promotion, JIT
8.1Enum, readonly, first-class callable, fibers, never
8.2Readonly class, DNF types, penghapusan fitur lama (dynamic property deprecated)
8.3Typed class constants, #[Override], json_validate()

Pastikan selalu memakai versi yang masih mendapat dukungan keamanan. Cek jadwal rilis di php.net.

Ekosistem dan praktik modern

  • Composer: pengelola dependency standar. composer require vendor/paket.
  • Autoloading PSR-4: tidak perlu require manual; kelas dimuat otomatis berdasarkan namespace.
  • Standar kode PSR-12 dan formatter otomatis (PHP-CS-Fixer, Laravel Pint).
  • Analisis statis: PHPStan atau Psalm menemukan bug tipe tanpa menjalankan kode.
  • Testing: PHPUnit atau Pest.
  • Framework: Laravel, Symfony, dan lainnya, semuanya mengandalkan fitur modern ini.

Kebiasaan yang perlu ditinggalkan

Kebiasaan lamaGantinya
mysql_* / mysqli dengan SQL tersambung stringPDO + prepared statement, atau ORM
Mencampur HTML dan logika dalam satu filePemisahan view dan template engine
include/require manual di mana-manaComposer autoload
Array asosiatif untuk data terstrukturClass dengan properti bertipe, enum
Menonaktifkan error reportTampilkan error di dev, log di produksi
== longgar yang menimbulkan hasil aneh=== dan strict types

Contoh sebelum dan sesudah

Gaya lama:

class Pengguna {
    private $nama;
    private $peran;
    function __construct($nama, $peran = 'user') {
        $this->nama = $nama;
        $this->peran = $peran;
    }
    function getNama() { return $this->nama; }
}

Gaya modern:

final class Pengguna
{
    public function __construct(
        public readonly string $nama,
        public readonly Peran $peran = Peran::User,
    ) {}
}

Jauh lebih pendek, bertipe, dan tidak bisa dimodifikasi tak sengaja.

Cara naik ke PHP modern

  1. Perbarui ke PHP 8.2+ di lingkungan pengembangan.
  2. Aktifkan declare(strict_types=1); pada file baru.
  3. Jalankan PHPStan dengan level rendah, naikkan bertahap.
  4. Ganti array konfigurasi/status dengan enum dan value object.
  5. Ikuti catatan deprecation sebelum meng-upgrade versi mayor.

Kesimpulan

PHP modern adalah bahasa yang berbeda dengan reputasinya: bertipe, ekspresif, dan cepat. Menguasai fitur seperti constructor promotion, enum, match, dan readonly membuat kodemu lebih ringkas dan lebih aman, dan ini adalah fondasi untuk belajar Laravel.

A
Admin KelasIT

Menulis tentang pemrograman, database, AI, dan karier di dunia IT supaya belajar terasa lebih mudah dan menyenangkan.

Komentar (0)

Komentar hanya untuk member. Masuk atau daftar gratis untuk ikut berdiskusi.

Mau belajar lebih dalam?

Course online dengan latihan coding interaktif dan sertifikat.

Lihat Course →

Gabung komunitas

Tanya jawab, info event, dan teman belajar di grup WhatsApp.

Gabung Grup