Pemrograman Web ~ OOP dengan PHP -Overloading

Assalamualaikum Warohmatullahi Wabarokatu

Halohaloo ini artikel terakhir pembahasan tentang OOP dengan PHP. Kali ini akan membahas tentang Overloading.

Overloading
Overloading di PHP menyediakan cara agar properti dan method dapat dibuat secara dinamis. Entitas dinamis ini diproses melali method ajaib yang dapat dibangun diclass untuk berbagai jenis tindakan.

method overloading dipanggil saat berinteraksi dengan properti atau method yang belum dideklarasikan atau tidak terlihat dalam baris program. Sisa dari bagian ini akan mengunakan istilah properti dan method yang tidak dapat diakses untuk merujuk pada kombinasi deklarasi dan visibilitas tersebut. Semua method overloading harus didefinisikan sebagai public.

Contoh Overloading Properties
<?php
class PropertyTest
{
    //lokasi overload
    private $data = array();

    //overload tidak digunakan saat mengdeklar properti
    public $declared = 1;

    //overload hanya bisa digunakan saat diluar kelas
    private $hidden = 2;

    public function __set($name, $value)
    {
        echo "Setting '$name' to '$value'\n";
        $this->data[$name= $value;
    }

    public function __get($name)
    {
        echo "Getting' $name'\n";
        if (array_key_exists($name, $this->data)) {
            return $this->data[$name];
        }

        $trace = debug_backtrace();
        trigger_error(
            'Undefiened property via _get():' . $name . 'in' .
                $trace[0]['file'] . 'on line' . $trace[0]['line'],
            E_USER_NOTICE
        );
        return null;
    }

    //as php5.1.0
    public function __isset($name)
    {
        echo "Is'$name'set'\n";
        return isset($this->data[$name]);
    }

    //as php 5.1.0
    public function __unset($name)
    {
        echo "Unsetting'$name'\n";
        unset($this->data[$name]);
    }

    public function getHidden()
    {
        return $this->hidden;
    }
}

echo "<pre>\n";
$obj = new PropertyTest;

$obj->a = 1;
echo $obj->a . "\n\n";

var_dump(isset($obj->a));
unset($obj->a);
var_dump(isset($obj->a));
echo "\n";

echo $obj->declared . "\n\n";

echo "Let's experiment with the private property named 'hidden':\n";
echo "Privates are visible inside the class, so _get()not used...\n";
echo $obj->getHidden() . "\n";
echo "Privates not visible outside of class, so _get() is used...\n";
echo $obj->hidden . "\n";

Dalam Codingan diatas mengunakan method : _get() , _set(), isset(), unset()

Contoh Overloading Method
<?php
class MethodTest
{
    public function __call($name, $arguments)
    {
        // nilai dari $name case sensitive
        echo "Calling  object method'$name'"
            . implode(',', $arguments) . "\n";
    }

    //di PHP 5.3.0
    public static function __callStatic($name, $arguments)
    {
        echo "Calling static method '$name'"
            . implode(',', $arguments) . "\n";
    }
}

$obj = new MethodTest;
$obj->runTest('in object context');

MethodTest::runTest('in static context');// di PHP 5.3.0

Dalam Codingan diatas menggunakan Method : _CALL() , _CALLSTATIC()

Studi Kasus
Buatlah interface class dengan nama GayaHidup dengan method sebagai berikut :
- berbicara
- bernafas
- makan 
- berjalan

Implementasikan interface tersebut ke Class Manusia dan Hewan . Buat minimal 2 objek Manusia dan hewan yang berbeda.

1. Buat Interface Class gayahidup.php
<?php

interface GayaHidup
{
    public function berbicara();
    public function bernafas();
    public function makan();
    public function berjalan();
}

2. Tambahkan Implements di Hewan Peliharaan dan Tambahkan semua Method yang ada di gayahidup.php agar tidak error 
class hewanpeliharaan extends kelompokmakan implements GayaHidup
{
    public $namahewan;
    public $jenis;

    public function __construct($namahewan, $jenis, $makanan)
    {
        echo 'Peliharaan Saya ' . '<br>';
        $this->namahewan = $namahewan;
        echo 'Bernama ' . $namahewan . '<br>';
        $this->jenis = $jenis;

        $this->makanan = $makanan;
    }
    public function berbicara()
    {
        echo $this->namahewan . ' Berbicara..';
    }

    public function bernafas()
    {
        echo $this->namahewan . ' Bernafas..';
    }
    public function makan()
    {
        echo $this->namahewan . ' Makan..';
    }
    public function berjalan()
    {
        echo $this->namahewan . ' Berjalan..';
    }

3.Lakukan seperti cara kedua di Manusia.php 
<?php
include 'kelompokmakan.php';
include 'gayahidup.php';
class Manusia extends KelompokMakan implements GayaHidup

{
    public $jenis_kelamin;
    public $nama;
    public $tanggal_lahir;

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

    public function berbicara()
    {
        echo $this->nama . ' saya bisa Berbicara..';
    }

    public function bernafas()
    {
        echo $this->nama . ' saya bisa Bernafas..';
    }
    public function makan()
    {
        echo $this->nama . ' saya bisa Makan..';
    }
    public function berjalan()
    {
        echo $this->nama . ' saya bisa Berjalan..';
    }

4.Buka dan Tambahkan 2 Objek di index.php dari HewanPeliharaan.php dan Manusia.php
<?php
include 'manusia.php';
include 'hewanpeliharaan.php';


$taufik = new Manusia();
$manusa = new Manusia();
$taufik->nama = 'Taufik Muhamad Ramdhan';
$taufik->jenis_kelamin = 'Laki-Laki';
$taufik->tanggal_lahir = '20/11/2002';
$taufik->makanan = 'Capcay';

$manusa->nama = 'Manusia';
$manusa->jenis_kelamin = 'Unknown';

echo '<b>Perkenalan </b> <br>';
echo  "nama saya : " .  $taufik->bersuara();
echo "<br>";
echo   $taufik->berjalan();
echo "<br>";
echo   $taufik->makan();
echo "<br>";
echo   $taufik->berbicara();
echo "<br>";
echo   $taufik->bernafas();
echo "<br>";

$doggy = new hewanpeliharaan('Anjing''Kucing''Daging');
echo 'bersuara ' . $doggy->suara() . '<br>';
echo 'dan berjenis ' .  $doggy->jenis() . '<br>';
echo   $doggy->berjalan();
echo "<br>";
echo   $doggy->makan();
echo "<br>";
echo   $doggy->berbicara();
echo "<br>";
echo   $doggy->bernafas();
echo "<br>  <br>";

echo '<b>Perkenalan </b> <br>';
echo "nama saya : " .   $manusa->bersuara();
echo "<br>";
echo   $manusa->berjalan();
echo "<br>";
echo   $manusa->makan();
echo "<br>";
echo   $manusa->berbicara();
echo "<br>";
echo   $manusa->bernafas();
echo "<br>";

$kitty = new hewanpeliharaan('Ucing''Anjing''Rumput');
echo 'bersuara ' . $kitty->suara() . '<br>';
echo 'dan berjenis ' .  $kitty->jenis() . '<br>';
echo   $kitty->berjalan();
echo "<br>";
echo   $kitty->makan();
echo "<br>";
echo   $kitty->berbicara();
echo "<br>";
echo   $kitty->bernafas();
echo "<br>";

5. Hasilnya akan menjadi seperti berikut

Okee sekian saja pembahasan untuk OOP dengan PHP ,mohon maaf untuk artikel ini telat menguploadnya, tunggu artikel berikutnya. Cyaa

Wassalamualaikum Warohmatullahi Wabarokatu

Comments

Popular Posts