OOP Pada PHP : Controlling Akses pada property dan method

Salah satu fitur dari OOP adalah pembungkusan (encapsulation) dimana sesuatu tidak dapat diakses bebas namun memiliki akses tertentu. Setiap Class yang kita buat, dapat kita atur agar dapat diakses secara tidak bebas atau bebas sesuai dengan keinginan kita. Dalam OOP inilah yang disebut sebagai Controlling Access Class. Apa yang diakses ? Yang diakses tentunya adalah fungsi / method serta property / variable.

Controlling pada OOP ada 3 yaitu :

  • Public : Akses pada Controlling ini berarti bahwa baik property ataupun method dapat diakses di dalam Class dimana property atau method itu didefinisikan ataupun di luar Class
  • Private : Akses pada Controlling ini berarti bahwa baik property ataupun method dapat diakses hanya pada Class dimana property atau method itu didefinisikan.
  • Protected : Akses pada Controlling ini berarti bahwa baik property ataupun method dapat diakses hanya pada Class dimana property atau method itu didefinisikan ataupun Class yang merupakan turuan dari Class yang didefinisikan.

Ketiga Controling tersebut lah yang dipakai pada OOP baik itu di PHP ataupun di Java. Apabila kita tidak menuliskan Controlling tersebut maka dianggap default adalah public.

Untuk membedakan antara keduanya kita akan mencoba mempraktekan.

Saya akan membuat Class Member dengan kode seperti dibawah ini.
File : Member.class.php

<?php

class Member {
    
    public $nama="adiputra";
    private $rahasia;
    
    public function sebut_nama() {
        echo "Hi...nama saya ".$this->nama;
    }
    
    public function setting_nama($p_nama) {
        $this->nama = $p_nama;
    }
    
    private function sebut_rahasia() {
        echo "Ini rahasia pribadi : ".$this->rahasia;
    }
    
}

?>

Lalu saya akan membuat file untuk mempraktekan Class member.

File : tes_member.php

<?php
    include_once("member.class.php");
    define("br","<br />");
    
    $obj_member = new Member();
    $obj_member->sebut_nama();
    
    echo br . $obj_member->nama;
?>

Apabila kode diatas dijalankan akan menghasilkan tampilan pada gambar dibawah ini.

Pada gambar diatas, terlihat bahwa kita dapat memanggil fungsi / method dengan akses public dengan mudah (pada baris kode ke-6). Kita juga dapat memangil property dengan akses public dengan baik (pada baris kode ke-8).

Sekarang coba kita akan mengkases property pada Class Member dengan akses private.

<?php
    include_once("member.class.php");
    define("br","<br />");
    
    $obj_member = new Member();
    echo $obj_member->rahasia;
?>

Pada kode diatas akan muncul error pada gambar seperti ini.

Begitupun apabila kita coba akses method / fungsi dengan akses private.

<?php
    include_once("member.class.php");
    define("br","<br />");
    
    $obj_member = new Member();
    echo $obj_member->sebut_rahasia();
?>

Kenapa bisa seperti itu ? Karna akses nya private dan kita sudah tau bahwa akses private hanya bisa dilakukan apabila pemanggilan / akses dilakukan di file Class itu sendiri.

Lalu bagaimana kalu suatu saat kita membutuhkan property yg private namun masih bisa di ambil dari luar ??

Temen-temen bisa ambil dengan cara membuat fungsi / method dengan akses public untuk mengambil property yang private. Berikut saya coba ganti sedikit Class Member.

<?php

class Member {
    
    public $nama="adiputra";
    private $rahasia=”ini rahasia ya..”;
    
    public function sebut_nama() {
        echo "Hi...nama saya ".$this->nama;
    }
    
    public function setting_nama($p_nama) {
        $this->nama = $p_nama;
    }
    
    public function sebut_rahasia() {
        return $this->rahasia;
    }
    
}

?>

Lalu kita coba panggil dengan membuat file baru

<?php
    include_once("member.class.php");
    define("br","<br />");
    
    $obj_member = new Member();
    echo $obj_member->sebut_rahasia();
?>

Maka akan keluar hasil sesuai isi dari property rahasia.

Seperti itulah praktek dari akses public dan akses private. Selanjutnya kita akan coba praktekan akses protected. Kita buat turunan / inherit dari Class Member. Inheritance akan dibahas pada artikel selanjutnya.

Saya akan rubah sedikit Class Member seperti pada kode dibawah ini

<?php

class Member {
    
    public $nama="adiputra";
    protected $rahasia="ini rahasia";
    
    public function sebut_nama() {
        echo "Hi...nama saya ".$this->nama;
    }
    
    public function sebut_rahasia() {
        return $this->rahasia;
    }
    
}

?>

Pada kode Class Member tersebut yang saya rubah adalah akses Protected dari property rahasia. Sengaja agar kita coba akses pada Class turunannya. Selanjutnya saya buat Class turunan member.

File : turunan.member.class.php

<?php
include_once("member.class.php");

class turunan extends Member {
    private $rahasia_lain="ini rahasia lain";
    public $nama_lain="adi";
        
    public function sebut_nama_member(){
        return $this->nama;
    }
    
    public function sebut_rahasia_member(){
        return $this->rahasia;
    }
}
?>

Lalu kita akan coba membuat praktek pemanggilannya.

File : tes_member.php

<?php
    include_once("turunan.member.class.php");
    define("br","<br />");
    
    $obj_turunan = new turunan();
    
    echo $obj_turunan->sebut_rahasia_member(); // panggil property rahasia member
    echo br . $obj_turunan->nama; // akses property member
    echo br . $obj_turunan->nama_lain; // akses property turunan
?>

Dan hasilnya dapat dilihat pada gambar dibawah ini.

itulah maksud dari akses protected, property dapat diakses secara langsung / bebas dari class turunannya.

Sampai disini smoga bisa dipahami.

3 thoughts on “OOP Pada PHP : Controlling Akses pada property dan method

  1. baru ini ngerti oop dari artikel2 disini…. mohon ada contoh lebih kompleks sedikit, misalnya CRUD dan upload pake oop… thanks berat brother…

Silahkan Komentar...

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s