0Pricing
PHP Academy · Pelajaran

Properti dan Method Statis

Gunakan anggota statis dan pahami kapan memanggilnya tanpa instance.

Properti dan Method Statis adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Pendahuluan: Properti dan Metode Statis

Anggota statis dimiliki oleh kelas itu sendiri, bukan oleh suatu instans. Akses anggota tersebut dengan ClassName::member atau self:: di dalam kelas. Anggota ini digunakan bersama oleh semua instans.

Konsep Inti

Konsep-konsep utama properti dan metode statis:

  • Deklarasikan dengan kata kunci static
  • Diakses dengan :: (operator resolusi lingkup)
  • self:: digunakan di dalam kelas; ClassName:: digunakan dari luar
  • Pengikatan statis terlambat menggunakan static::

Properti Statis

Contoh:

<?php
class AppConfig {
    private static array $settings = [];

    public static function set(string $key, mixed $val): void {
        self::$settings[$key] = $val;
    }

    public static function get(string $key, mixed $default = null): mixed {
        return self::$settings[$key] ?? $default;
    }
}

AppConfig::set('debug', true);
echo AppConfig::get('debug') ? 'debug on' : 'debug off';

Metode Statis

Kelanjutan:

<?php
class MathHelper {
    public static function clamp(float $v, float $min, float $max): float {
        return max($min, min($max, $v));
    }

    public static function lerp(float $a, float $b, float $t): float {
        return $a + ($b - $a) * $t;
    }
}

echo MathHelper::clamp(150, 0, 100); // 100
echo MathHelper::lerp(0, 100, 0.5);  // 50

Pola Instans Tunggal

Latihan:

<?php
class Database {
    private static ?Database $instance = null;

    private function __construct() {
        echo 'Connected to DB';
    }

    public static function getInstance(): self {
        if (self::$instance === null) {
            self::$instance = new self();
        }
        return self::$instance;
    }
}

$db1 = Database::getInstance();  // 'Connected to DB'
$db2 = Database::getInstance();  // no output — same instance
echo ($db1 === $db2) ? 'same' : 'different'; // same

Penghitung Statis

Pendalaman:

<?php
class EventEmitter {
    private static int $instanceCount = 0;

    public function __construct() {
        self::$instanceCount++;
    }

    public static function count(): int {
        return self::$instanceCount;
    }
}

new EventEmitter();
new EventEmitter();
new EventEmitter();
echo EventEmitter::count();  // 3

Pengikatan Statis Terlambat

Penggunaan lanjutan:

<?php
class ParentClass {
    public static function create(): static {
        return new static();  // resolves to calling subclass
    }

    public function getClass(): string {
        return static::class;  // late static binding
    }
}

class ChildClass extends ParentClass {}

$obj = ChildClass::create();
echo $obj->getClass();  // ChildClass

Pabrik Statis

Pola dunia nyata:

<?php
class Response {
    private function __construct(
        private int   $status,
        private mixed $body
    ) {}

    public static function ok(mixed $data): self {
        return new self(200, $data);
    }

    public static function notFound(): self {
        return new self(404, ['error' => 'Not Found']);
    }

    public function toJson(): string {
        return json_encode(['status' => $this->status, 'body' => $this->body]);
    }
}

echo Response::ok(['users' => []])->toJson();

Pertimbangan Statis vs Instans

Praktik terbaik:

<?php
// Static: no object needed, but harder to test/mock
class Validator {
    public static function isEmail(string $s): bool {
        return (bool) filter_var($s, FILTER_VALIDATE_EMAIL);
    }
}

// Instance: injectable dependency, testable
class ValidatorService {
    public function isEmail(string $s): bool {
        return (bool) filter_var($s, FILTER_VALIDATE_EMAIL);
    }
}
// Prefer instance classes in larger applications

Pola Praktis

Menyatukan semuanya melalui pola praktis untuk properti dan metode statis.

Kesalahan Umum

Hindari kesalahan umum berikut saat menggunakan properti dan metode statis:

  • Anggota statis digunakan bersama oleh semua instans
  • Lebih baik gunakan pengikatan statis terlambat (static::) daripada self:: dalam kelas yang dapat diwariskan
  • Pola instans tunggal umum digunakan, tetapi terkadang digunakan secara berlebihan
  • Metode statis lebih sulit disimulasikan dalam pengujian unit

Pemeriksaan Singkat

Kata kunci apa yang mengakses properti statis di dalam kelas dengan tetap menghormati pewarisan (pengikatan statis terlambat)?

Ringkasan: Properti dan Metode Statis

Anda telah mempelajari properti dan metode statis. Poin-poin penting yang perlu diingat:

  • Anggota statis digunakan bersama oleh semua instans
  • Lebih baik gunakan pengikatan statis terlambat (static::) daripada self:: dalam kelas yang dapat diwariskan
  • Pola instans tunggal umum digunakan, tetapi terkadang digunakan secara berlebihan
  • Metode statis lebih sulit disimulasikan dalam pengujian unit

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Properti dan Method Statis” gratis?

Ya — teks lengkap “Properti dan Method Statis” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Properti dan Method Statis”?

Gunakan anggota statis dan pahami kapan memanggilnya tanpa instance. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Properti dan Method Statis” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Class, Properti, dan Method
  2. Constructor dan Destructor
  3. Properti dan Method Statis
  4. Gambaran Umum Method Ajaib
← Kembali ke PHP Academy