OOP Pada PHP


       Assalamualaikum wr wb, pada blog kali ini saya akan menjelaskan materi mengenai OOP pada PHP. Setelah sebelumnya kita sudah mempelajari mengenai PHP Native dengan membuat sistem CRUD Data Siswa kali ini kita mulai belajar mengenai OOP pada Bahasa Pemogramman PHP. Langsung saja ke materi sebelum itu siapkan text editor,xampp,dan browsernya.

A. Class

        Definisi class dasar (basic class) dimulai dengan kata kunci class, diikuti oleh nama class, kemudian diikuti oleh sepasang kurung kurawal yang melampirkan definisi properties dan method milik class tersebutKata apapun bisa dijadikan nama class kecuali nama / kata yang sudah menjadi kata kunci pada PHP class dapat berisi class nya sendiri,   (yaitu "propertieses"), & fungsi (yaitu "methods").

Contoh Penulisan Class pada PHP


Penjelasan : Variabel pseudo $this tersedia ketika sebuah method dipanggil dari dalam konteks objek.

$this adalah referensi ke objek pemanggil

Instansi Class pada PHP
        
          Untuk membuat instance class, kata kunci “new” harus digunakan. Objek akan selalu dibuat kecuali objek memiliki konstruktor yang ditentukan untuk melempar exception pada error. Class harus didefinisikan sebelum instantiasi (dan dalam beberapa kasus ini adalah persyaratan). Jika string yang berisi nama class digunakan dengan kata kunci “new”, instance baru dari class tersebut akan dibuat. Jika class ada di namespace, nama class secara keseluruhan harus digunakan agar memenuhi syarat .

Contoh Membuat Instansi Class :


B. Objek

      Dalam konteks class, kita dapat membuat objek baru dengan objek atau parent baru. Saat menetapkan instance class yang sudah dibuat ke variabel baru, variabel baru akan mengakses instance yang sama dengan objek yang ditugaskan. Hal ini sama ketika menyampaikan instance ke suatu fungsi. Salinan objek yang sudah dibuat dapat dipakai dengan mengkloningnya.

Contoh Penugasan Objek :




Contoh Membuat Objek Baru :



Contoh Mengakases Objek Yang Baru :




C. Property dan Method  

        Class propertieses dan method berada dalam “namespace" yang terpisah, sehingga dimungkinkan untuk memiliki propertieses dan method dengan nama yang sama. Mengacu pada propertieses dan method memiliki notasi yang samaKemudian apakah propertieses akan diakses atau method akan dipanggil, semata-mata tergantung pada konteksnya, yaitu apakah penggunaannya sebagai akses variabel atau pemanggilan fungsi.

Contoh Pengaksesan Property dan Pemanggilan Method 



Contoh Pemanggilan Fungsi anonym yang ada pada properti :



D. Extends 

        class dapat mewariskan method dan properties class lain dengan menggunakan kata kunci yang diperluas dalam deklarasi class. Tidak mungkin untuk memperpanjang beberapa class; suatu class hanya dapat mewarisi dari satu class dasar method dan properties yang diwarisi dapat diganti dengan mendeklarasikannya dengan nama yang sama yang didefinisikan di class induk. Namun, jika class induk telah mendefinisikan method sebagai final, method itu mungkin tidak diganti. Dimungkinkan untuk mengakses method yang diganti atau properties statis dengan mereferensikannya dengan parent :: . Saat mengganti method, tanda parameter harus tetap sama atau PHP akan menghasilkan kesalahan level E_STRICT. Ini tidak berlaku untuk konstruktor, yang memungkinkan penggantian dengan parameter yang berbeda

Contoh Penggunaan Extends :



::class 

      Sejak PHP 5.5, kata kunci class juga digunakan untuk resolusi nama class. Anda bisa mendapatkan string yang berisi nama kualifikasi penuh dari class ClassName dengan menggunakan ClassName :: class. Ini sangat berguna dengan class namespace.

Contoh Penggunaan "::class" :



E. Studi Kasus

       Pada studi kasus kali ini kita akan menampilkan data hewan termasuk nama, jenis, suara, tipe makanan, cara berkembang biak, dan habitatnya. Kita akan membuat 3 class yaitu : HewanPeliharaan.php, KelompokMakan.php , dan index.php.

Class HewanPeliharaan.php :

<?php 
include 'KelompokMakan.php';
class HewanPeliharaan extends KelompokMakan{
    private $nama;
    private $jenis;

    public function setNama($nama){
        $this->nama = $nama;
    }

    public function setJenisHewan($jenis){
        $this->jenis = $jenis;
    }

    public function setTipeBerkembang($tipe_biak){
        $this->tipe_biak = $tipe_biak;
    }

    public function getNama() {
        return $this->nama;
    }

    public function getJenisHewan(){
        return $this->jenis;
    }

    public function getTipeBerkembang() {
        return $this->tipe_biak;
    }

    public function bersuara() {
        $jenis = $this->jenis;
        switch($jenis) {
            case 'Kucing' : return 'Mengeong';
            case 'Domba' : return 'Mbeeeeee';
            case 'Ular' : return 'Mendesiss';
            case 'Beruang' : return 'Uwaaaw';
        }
    }

    public function berkembangbiak(){
        $jenis = $this->jenis;
        switch($jenis) {
            case 'Kucing' : return 'Vivipar';
            case 'Domba' : return 'Vivipar';
            case 'Ular' : return 'Ovovivipar';
            case 'Beruang' : return 'Vivipar';
        }
    }

    public function habitat(){
        $jenis = $this->jenis;
        switch($jenis) {
            case 'Kucing' : return 'Darat';
            case 'Domba' : return 'Darat';
            case 'Ular' : return 'Amfibi';
            case 'Beruang' : return 'Darat';
        }
    }

    public function __CONSTRUCT ($nama,$jenis,$makanan){
        $this->nama=$nama;
        $this->jenis=$jenis;
        $this->makanan=$makanan;
    }
}
?>

Class KelompokMakan.php

<?php 
class KelompokMakan{
    protected $makanan;

    public function jenis(){
        $makanan = $this->makanan;
        switch($makanan) {
            case 'Segala' : return 'Omnivora';
            case 'Daging' : return 'Karnivora';
            case 'Rumput' : return 'Herbivora';
        }
    }
}
?>

Class index.php

<?php   
    include 'HewanPeliharaan.php';      
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Studi Kasus OOP PHP</title>
    <link rel="stylesheet" href="assets/css/style.css">
</head>
<body>
<center>
    <h1>Daftar Hewan OOP PHP</h1>
    <table border="1" width="50%" cellspacing="0">
        <tr>
            <th>Foto</th>
            <th>Nama</th>
            <th>Jenis</th>
            <th>Suara</th>
            <th>Tipe</th>
            <th>Berkembang</th>
            <th>Habitat</th>
        </tr>
        <tr align="center" class="cat">
            <td><img src="assets/img/cat.png" width="90"></td>
            <?php $sato1  = new HewanPeliharaan('Kitty','Kucing','Daging'); 
                echo '
                <td>'.$sato1->getNama().'</td>
                <td>'.$sato1->getJenisHewan().'</td>
                <td>'.$sato1->bersuara().'</td>
                <td>'.$sato1->jenis().'</td>
                <td>'.$sato1->berkembangbiak().'</td>
                <td>'.$sato1->habitat().'</td>';
            ?>
        </tr>
        <tr align="center" class="domba">            
            <td><img src="assets/img/domba.png" width="90"></td>
            <?php $sato2 = new HewanPeliharaan('Beni','Domba','Rumput'); 
                echo '
                <td>'.$sato2->getNama().'</td>
                <td>'.$sato2->getJenisHewan().'</td>
                <td>'.$sato2->bersuara().'</td>
                <td>'.$sato2->jenis().'</td>
                <td>'.$sato2->berkembangbiak().'</td>
                <td>'.$sato2->habitat().'</td>';
            ?>
        </tr>
        <tr align="center" class="snake">            
            <td><img src="assets/img/snake.png" width="90"></td>
            <?php $sato3 = new HewanPeliharaan('Manda','Ular','Daging'); 
                echo '
                <td>'.$sato3->getNama().'</td>
                <td>'.$sato3->getJenisHewan().'</td>
                <td>'.$sato3->bersuara().'</td>
                <td>'.$sato3->jenis().'</td>
                <td>'.$sato3->berkembangbiak().'</td>
                <td>'.$sato3->habitat().'</td>';
            ?>
        </tr>
        <tr align="center" class="bear">            
            <td><img src="assets/img/bear.png" width="90"></td>
            <?php $sato4 = new HewanPeliharaan('Makarov','Beruang','Segala'); 
                echo '
                <td>'.$sato4->getNama().'</td>
                <td>'.$sato4->getJenisHewan().'</td>
                <td>'.$sato4->bersuara().'</td>
                <td>'.$sato4->jenis().'</td>
                <td>'.$sato4->berkembangbiak().'</td>
                <td>'.$sato4->habitat().'</td>';
            ?>
        </tr>
    </table>
    </center>
</body>
</html>


Hasil Studi Kasus



Sekian penjelasan materi yang dapat saya sampaikan semoga bermanfaat dan dapat dibagikan kepada rekan rekan yang belum tau. Terima Kasih Mohon maaf bila ada kesalahan . Wassalamualaikum wr wb