Method & property static
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 17 dari 91.
Sama seperti property dapat bersifat static, method juga dapat menjadi bagian dari class itu sendiri, bukan dari masing-masing object. Kamu dapat memanggil method static langsung pada class, tanpa perlu membuat instance terlebih dahulu.
Kamu mendeklarasikan method statis menggunakan kata kunci static dan memanggilnya dengan nama class serta operator :::
<?php
class MathHelper {
public static function add($a, $b) {
return $a + $b;
}
public static function multiply($a, $b) {
return $a * $b;
}
}
echo MathHelper::add(5, 3) . "\n";
echo MathHelper::multiply(4, 2);
Output:
8
8Static method bekerja dengan baik bersama property static. Pola yang umum adalah menggunakan method static untuk mengelola data class yang digunakan bersama:
<?php
class Counter {
private static $count = 0;
public static function increment() {
self::$count++;
}
public static function getCount() {
return self::$count;
}
}
Counter::increment();
Counter::increment();
echo Counter::getCount();
Keluaran:
2Perhatikan bahwa method statis tidak dapat menggunakan $this karena tidak ada instance object. Method tersebut hanya dapat mengakses property statis dan method statis lainnya menggunakan self::.
Inti Penting: Method static berguna untuk fungsi utilitas yang tidak memerlukan state object, atau untuk mengelola data di tingkat class. Method ini menyediakan fungsionalitas tanpa memerlukan pembuatan instance object.
Tantangan
MudahMari buat sistem generator ID yang menggunakan method dan property static untuk membuat ID unik tanpa perlu membuat instance object.
Kamu akan membuat dua file untuk mengatur kodemu:
IdGenerator.php: Definisikan classIdGeneratoryang mengelola pembuatan ID unik hanya dengan menggunakan anggota static. Class ini harus memiliki property static privat$lastIdyang dimulai dari0dan property static privat$prefixyang diatur ke"ID". Buat method staticgenerate()yang menambah ID terakhir dan mengembalikan string berformat yang menggabungkan prefix dan ID baru (seperti"ID1","ID2", dan seterusnya). Tambahkan method staticsetPrefix($newPrefix)untuk mengubah prefix, serta method staticgetLastId()yang mengembalikan nilai$lastIdsaat ini.main.php: Sertakan file class IdGenerator. Buat dua ID menggunakan prefix bawaan dan cetak masing-masing pada baris tersendiri. Lalu, ubah prefix menjadi"USER"menggunakan method static, buat dua ID lagi, dan cetak masing-masing. Terakhir, cetak nomor ID terakhir dengan memanggil method static yang sesuai.
Ingat, method static dipanggil langsung pada class menggunakan ClassName::methodName(), dan di dalam class, kamu mengakses property static dengan self::$propertyName. Karena tidak ada instance object, kamu tidak dapat menggunakan $this dalam method static.
Output-mu harus menunjukkan urutan ID dengan prefix yang berbeda, untuk menunjukkan bagaimana property static mempertahankan nilainya di beberapa pemanggilan method.
Coba sendiri
<?php
// Sertakan file class IdGenerator
require_once 'IdGenerator.php';
// TODO: Buat dua ID dengan prefiks bawaan dan cetak masing-masing pada baris terpisah
// TODO: Ubah prefiks menjadi "USER" menggunakan method statis
// TODO: Buat dua ID lagi dan cetak masing-masing pada baris terpisah
// TODO: Cetak nomor ID terakhir menggunakan method statis yang sesuai
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengenalan OOPclass vs objectKata Kunci $thismethodpropertyConstructor (__construct)Destructor (__destruct)Ringkasan: Kalkulator Sederhana4Pewarisan
Pewarisan DasarKata Kunci parent::Penimpaan methodKata Kunci finalClass AbstrakRingkasan: Hierarki Karyawan7Enkapsulasi
Public, Protected, PrivateModifier Akses secara MendalamGetter dan SetterPenyembunyian InformasiPromosi Constructor (8.0)Ulasan: Sistem Catatan Siswa2Namespace dan Autoloading
Pengenalan NamespaceKata Kunci useStandar Autoloading PSR-4Autoloader ComposerRingkasan: Proyek yang Terorganisasi5Interface dan Kontrak
Pengenalan InterfaceMengimplementasikan InterfaceImplementasi Beberapa InterfaceInterface vs Abstract ClassPetunjuk Tipe dengan InterfaceRekap: Kalkulator Bentuk8Magic Methods
Pengantar Magic Methods__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Cloning Object__serialize & __unserializeRingkasan: Koleksi Kustom11Sistem Tipe Data dan Penanganan Error
Deklarasi TipeTipe NullableTipe Union dan IntersectionClass ExceptionHierarki Exception KustomTry, Catch, FinallyRekap: Validator Form3Property dalam class
Property instance vs staticKonstanta dalam classMethod & property staticProperty private & protectedProperty readonly (PHP 8.1)Ulasan: Pengelola Rekening Bank6Polimorfisme
Meninjau Kembali Method OverridingPolimorfisme melalui AntarmukaPetunjuk Tipe dan Tipe UnionPengikatan Statis TertundaRangkuman: Pemroses PembayaranLatihan sendiri: Compiler PHP online