Belajar PHP OOP Part 1.1 : Pengenalan OOP (Class, Object, Properties)
Apa itu Object Oriented Programming ?
- Object Oriented Programming adalah sudut pandang bahasa pemrograman yang Orientasi/berkonsep "Objek"
- Ada banyak sudut pandang bahasa pemrograman, namun OOP adalah yang sangat populer sampai saat ini
- Ada beberapa istilah yang perlu dimengerti dalam OOP, yaitu : Object dan Class (Utama)
Apa itu Object ?
- Object adalah data yang berisi filed/ properties/ atributes dan method/ function / behavior
Apa itu Class ?
- Class adalah blueprint, prototype atau cetakan untuk membuat object
- Class berisikan deklarasi semua properties dan function yang dimiliki oleh object
- Setiap object selalu dibuat dari Class
- dan sebuah Class bisa membuat object tanpa batas
1. Class
- Untuk membuat class, kita bisa menggunakan kata kunci class
- Penamaan class biasa menggunakan format CamelCase/ Punduk Unta, contoh ( ClusterTeknologi)
Person.php
class Person
{
}
1.2 Object
- Object adalah hasil instansiasi dari sebuah class
- Untuk membuat object kita bisa menggunakan kata kunci new, dan diikuti dengan nama class dan kurung buka- kurung tutup ().
Object.php
require_once "data/Person.php";
$person = new Person();
var_dump($person1);
1.3 Properties
- Fileds/ Properties/ Attributes adalah data yang bisa kita sisipkan di dalam object
- Namun sebelum kita bisa memasukan data di fields/properties, kita harus mendeklarasikan data apa aja yang dimiliki oleh object tersebut di dalam deklarasi class-nya
- Membuat field sama seperti membuat variable, namun di tempatkan di block class, namun diawali data kata kunci var
class Person
{
var $name;
var $address;
var $country;
}
Manipulasi Properties
- Fields yang ada di object, bisa kita manipulasi
- Untuk memanipulasi data field, sama seperti cara pada variable
- Untuk mengakses field, kita butuh kata kunci -> setelah nama object dan diikuti nama fields nya
Properties.php
require_once "data/Person.php";
$person = new Person();
$person->name = "Eko";
$person->address = "Subang";
$person->country = "Indonesia";
var_dump($person);
echo "Name : {$person->name}" . PHP_EOL;
echo "Address : {$person->address}" . PHP_EOL;
echo "Country : {$person->country}" . PHP_EOL;
//Atau
$person2 = new Person();
$person2->name = "Budi";
$person2->address = "Jakarta";
$person2->country = "Indonesia";
var_dump($person2);
Properties Type Declaration
- Sama Seperti di function, di properties pun, kita bisa membuat type declaration
- Ini membuat PHP otomatis mengecek tipe data yang sesuai dengan type declaration yang telah di tentukan
- Jika kita mencoba mengubah properties dengan type yang berbeda, maka otomatis akan error
- Ingat, bahwa PHP memiliki fitur type juggling, yang secara otomatis bisa mengkonversi ke tipe data lain
- Untuk menambahkan type declaration, kita bisa tambahkan setelah kata kunci var di properties
class Person
{
var string $name;
var string $address;
var string $country;
}
Pengujian
Mencoba memasukan array ke properties name, dimana pada name sudah di setting menjadi string, hasilnya akan error.
//Error
$person2->name = [];
Default Properties Value
- Sama seperti variable, di properties juga kita bisa langsung mengisi value nya
- Ini mirip seperti default value, jadi jika tidak diubah di object, maka properties akan memiliki value tersebut.
<?php
class Person
{
var string $name;
var string $address;
var string $country = "Indonesia";
}
$person2 = new Person();
$person2->name = "Budi";
$person2->address = "Jakarta";
//$person2->country = "Indonesia";
var_dump($person2);
Nullable Properties
- Saat kita menambahkan type declaration di properties atau di function argument, maka secara otomatis kita tidak bisa mengirim data null ke dalam properties atau function argument tersebut
- Di PHP 7.4 dikenalkan nullable type, jadi kita bisa mengirim data null ke properties atau function arguments
- Caranya sebelum type declaration nya, kita bisa tambahkan tanda ?
Sebelum menggunakan Nullable Type
class Person
{
var string $name;
var string $address = null;
var string $country = "Indonesia";
}
require_once "data/Person.php";
$person = new Person();
$person->name = "Eko";
$person->address = "Subang";
$person->country = "Indonesia";
var_dump($person);
echo "Name : {$person->name}" . PHP_EOL;
echo "Address : {$person->address}" . PHP_EOL;
echo "Country : {$person->country}" . PHP_EOL;
Sesudah menerapkan Nullable Type
<?php
class Person
{
var ?string $name;
var ?string $address = null;
var string $country = "Indonesia";
}
<?php
require_once "data/Person.php";
$person = new Person();
$person->name = null;
$person->address = null;
$person->country = "Indonesia";
var_dump($person);
echo "Name : {$person->name}" . PHP_EOL;
echo "Address : {$person->address}" . PHP_EOL;
echo "Country : {$person->country}" . PHP_EOL;
//Atau
$person2 = new Person();
$person2->name = null;
$person2->address = null ;
//$person2->country = "Indonesia";
var_dump($person2);
//Error
//$person2->name = [];