Catatan OOP pada PHP part 1

Fajar Setiawan Siagian
3 min readApr 27, 2022
Photo by Clément Hélardot on Unsplash

pembahasan ini akan membahas mengenai OOP pada PHP. fokus utama nya adalah object dan class.

apa yang dimaksud object berupa field/properties/attriubutes atau method/function/behavior. Sedangkan class adalah blueprint/prototype atau cetakan untuk membuat object. Class berisikan properties dan function yang dimiliki object. Setiap object dibuat dari class. Dan sebuah class dapat membuat object tanpa batas.

Untuk membuat class harus menggunakan kata kunci class dan formatnya penamaanya CamelCase. SedangkanObjek adalah instansi dari sebuah class, untuk membuat objek kita harus menggunakan kata kunci new dan diikuti nama class kemudian tanda (). Untuk Field/Properties/Attribute adalah data yang bisa kita sisipkan di dalam object. Namun sebelum kita memasukkan data kedalam object, kita harus mendeklarasikan data apa saja yang di miliki objek tersebut didalam deklarasi class-nya.Membuat field sama seperti membuat variable, namun di tempatkan di block class dan di awali dengan var. Penjelasannya dapat kamu baca disini https://www.php.net/manual/en/language.oop5.properties.php

saat kita menambahkan type declaration di properties atau function argument, maka secara otomatis kita tidak dapat mengirimkan data null kedalamnya. Untuk mengatasi masalah tersebut diperkenalkanlah nullable type pada PHP7.4, hal ini dapat membuat kita dapat mengirimkandata null ke properties atau function arguments. Caranya cukup simple dengan menambahkan tanda ? sebelum type declaration ex: public ?string $nama.

Kita juga dapat menambahkan function ke dalam object dengan cara mendeklarasikan function tersebut didalam class. Sama juga seperti function biasanya, kita juga dapat menambahkan return value dan parameter. Untuk mengakses function tsb, kita dapat mengaksesnya dengan menggunakan tanda -> dan diikuti nama function/method didalam kelas tersebut.

berikutnya kita akan membahas tentang this keyword. this ini digunakan untuk mengakses object saat ini pada class yang sama yang dimana akan di pakai pada function/method di dalam nya.

Constant akan menempel di dalam class bukan object. Sedangkan untuk mengakses constant dapat dilakukan sebagai berikut, ClassName::Constant.

Saat kita membuat object , maka kita seperti memanggil function karena kita menggunakan {}. Di dalam class PHP, kita bisa menggunakan constructor. Constructor ini merupakan fungsi yang pertama kali di panggil saat objek dibuat. Mirip seperti function, kita bisa memberi paramater pada constructor. nama constructor pada PHP harus menggunakan __construct(). Sedangkan Destructor adalah function yang di panggil saat objek dihapus dari memory.

Inheritance (pewarisan) adalah kemampuan untuk menurunkan sebuah kelas ke class lainnya. Dalam artian kita bisa membuat class parent dan class child. class child hanya bisa punya satu class parent, sedangkan class parent dpt memiliki banyak class child. Saat sebuah class di turunkan, maka semua properties dan function yang ada di kelas parent, secara otomatis akan dimiliki oleh class child. Untuk melakukan inheritance, di class child harus mengguanakn kata kunci extends di ikuti dengan nama kelas parentnya.

Selanjutnya kita akan membahas namespace. Ini berkaitan dengan semakin banyak class yang akan kita buat untuk aplikasi kita,akibat terlalu banyak class tersebut dapat menyulitkan kita untuk mencari atau mengklasifikasikan jenis-jenis class. PHP memiliki fitur yang dinamakan namespace untuk mengatasi masalah ini.namespace ini bisa kita gunakan untuk menyimpan class class kita. Namespace bisa nested, dan jika ingin mengakses class yang tedpat di namespace, kita perlu menyebutkan namespacenya. Namespace bagus ketika kita punya beberapa class yang sama, dengan menggunakan ini hal tersebut dapat di hindari berupa error.

Visibility/ Access modifier adalah kemampuan function, properties dan constant dapat di akses dimana saja. Secara default visibility nya public (dapat diakses dimana saja)

Public : Class, Subclass, World

Protected: Class, Subclass

Private: Class

--

--

Fajar Setiawan Siagian

A Full Stack Web Developer. all my stories in Indonesia. Hope you find a solution in my stories