Desdulianto
// definisi class class Person { public string $name; public function __construct(string $name) { $this->name = $name; } public function intro(): string { return "Hello, my name is $this->name"; } } // object $budi = new Person('Budi'); $budi->intro();
public
protected
private
$this
method
->
new
__construct
__destruct
Tersedia sejak PHP versi 8
Shorthand untuk men-deklarasi dan menginisialisasi property
class Person { public function __construct( public string $name, public string $gender ) { // constructor body } } $budi = new Person('Budi', 'Pria');
readonly
Deklarasi constant di dalam class
Diakses dengan menggunakan scope resolution operator ::
::
class Person { const MAX_NAME_LENGTH = 200; } Person::MAX_NAME_LENGTH;
Membuat class turunan dari sebuah super class (parent class)
Subclass hanya bisa diturunkan dari satu super class (parent class)
class Person { ... } class Student extends Person { ... }
Variable parent mengacu ke parent class
parent
Operator instanceof untuk men-check apakah object merupakan instance dari suatu class $budi instanceof Student // true jika $budi adalah Student
instanceof
$budi instanceof Student // true jika $budi adalah Student
Dapat diakses tanpa perlu membuat object
Nilai property static bersifat global terhadap class yang sama
Diakses dengan self atau static dan operator ::
self
static
class SomeClass { static private int $timeSpawn = 0; public function __construct() { self::$timeSpawn++; } public static function timeSpawn() { return self::$timeSpawn; } }
Class dengan method yang body nya belum di definisikan
Tidak dapat digunakan untuk membuat object
Memerlukan concrete class yang mengimplementasi seluruh method abstract
abstract class Bangun2D { abstract public function luas(); } class PersegiPanjang extends Bangun2D { public function luas() { return $this->panjang * $this->lebar; } }
Berisikan deklarasi method tanpa implementasi -- contract
Class dapat mengimplementasikan satu atau lebih interface
interface SomeInterface { public function someMethod($parameter); } class SomeClass implements SomeInterface { public function someMethod($parameter) { // method implementation } }
Code reuse antara class yang bukan diturunkan dari super class yang sama
trait SomeTrait { function someMethod($parameter) { // method implementation } } class SomeClass { use SomeTrait; ... }
Apabila dipasangkan pada class, class tersebut tidak dapat diturunkan lagi
Apabila dipasangkan ke constant atau method, constant atau method tersebut tidak dapat di override oleh class turunan
class SomeClass { final const SomeFinalConstant = 1; final public function SomeMethod($parameter) { // method implementation } }
clone
__clone()
Operator == membandingkan object berdasarkan masing-masing property object
==
Operator === membandingkan apakah instance object mengacu ke object yang sama
===
class Person { public function __construct(public string $name) {} } $budi = new Person('budi'); $budi1 = new Person('budi'); $budi == $budi1; // true $budi === $budi1; // false
Digunakan untuk mengorganisasikan kode PHP
Menghindari terjadinya name collision
Dapat menggunaka alias ketika mengimport module
// domain/library/SomeClass.php namespace domain\library; class SomeClass { ... } // otherdomain/code.php namespace otherdomain; use domain\library\SomeClass as ClassAlias;
Sejak PHP versi 8.1.0
Mendifinisikan tipe data dengan batasan nilai, mis: Bulan (Januari - Desember)
enum Bulan { case Januari; case Februari; ... case Desember; } $januari = Bulan::Januari;
Enum dengan nilai scalar, diakses melalui property value
value
from dan tryFrom untuk konversi dari nilai scalar kembali ke enum
from
tryFrom
enum Bulan { case Januari = 'Jan'; case Februari = 'Feb'; ... case Desember = 'Des'; } $bulan = Bulan::Januari; $bulan->value; // 'Jan' $bulan = Bulan::from('Jan'); // Bulan::Januari