Assalamualaikum Semua
CONTOH #2 OVERLOADING METHODS VIA THE __CALL() AND __CALLSTATIC() METHODS
Study Kasus:
Selanjutnya masukan kode berikut ke KelompokMakanan.php
include 'GayaHidup.php';
Selanjutnya buka file HewanPeliharaan.PHP dan tambahkan kode pada class seperti berikut
class HewanPeliharaan extends KelompokMakan implements GayaHidup
selanjutnya tambahkan code dibawah, code ini berfungsi agar tidak mengalami error karena interface harus di implementasikan
selanjutnya buka Manusia.php lalu tambahkan kode pada class seperti berikut
class Manusia extends KelompokMakan implements GayaHidup
tambahkan code yang sama seperti sebelumnya :
Selanjutnya buka index.php dan tambahkan code seperti berikut:
Hasilnya seperti ini
Sekian Terimakasih
Hallo semua selamat datang kembali. Saya Muhammad Aslam atau panggil saja Mas Lam akan berbagi pengetahuan tentang PHP langsung saja tanpa banyak basa basi lagi yu urang belajar PHP.
OVERLOADING
- Overloading di PHP menyediakan cara agar properti dan method dapat dibuat secara dinamis. Entitas dinamis ini diproses melalui method ajaib yang dapat dibangun di class 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 menggunakan istilah properti dan method yang tidak dapat diakses untuk merujuk pada kombinasi deklarasi dan visibilitas tersebut.
- Semua method overloading harus didefinisikan sebagai public.
CONTOH #1 OVERLOADING PROPERTIES VIA THE __GET(), __SET(), __ISSET() AND __UNSET() METHODS
OVERLOADING
- Overloading di PHP menyediakan cara agar properti dan method dapat dibuat secara dinamis. Entitas dinamis ini diproses melalui method ajaib yang dapat dibangun di class 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 menggunakan istilah properti dan method yang tidak dapat diakses untuk merujuk pada kombinasi deklarasi dan visibilitas tersebut.
- Semua method overloading harus didefinisikan sebagai public.
CONTOH #1 OVERLOADING PROPERTIES VIA THE __GET(), __SET(), __ISSET() AND __UNSET() METHODS
<?php
class PropertyText
{
private $data = array();
public $declared = 1;
private $hidden = 2;
public function __set($name, $value)
{
echo "Setting".$name."To".$value;
$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(
'Unidentified via __get()'.$name.'in'.
$trace[0]['file'].'on line'.$trace[0]['line'].E_USER_NOTICE
);
return null;
}
public function __isset($name)
{
echo "Is".$name.'Set?';
return isset($this->data[$name]);
}
public function __unset($name)
{
echo "Unsetting ".$name.'\n';
unset($this->data[$name]);
}
public function getHidden()
{
return $this->hidden;
}
}
echo "<pre>\n";
$obj = new PropertyText();
$obj->data = 1;
echo $obj->a . "\n\n";
var_dump(isset($obj->a));
isset($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";
class PropertyText
{
private $data = array();
public $declared = 1;
private $hidden = 2;
public function __set($name, $value)
{
echo "Setting".$name."To".$value;
$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(
'Unidentified via __get()'.$name.'in'.
$trace[0]['file'].'on line'.$trace[0]['line'].E_USER_NOTICE
);
return null;
}
public function __isset($name)
{
echo "Is".$name.'Set?';
return isset($this->data[$name]);
}
public function __unset($name)
{
echo "Unsetting ".$name.'\n';
unset($this->data[$name]);
}
public function getHidden()
{
return $this->hidden;
}
}
echo "<pre>\n";
$obj = new PropertyText();
$obj->data = 1;
echo $obj->a . "\n\n";
var_dump(isset($obj->a));
isset($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";
CONTOH #2 OVERLOADING METHODS VIA THE __CALL() AND __CALLSTATIC() METHODS
<?php
class MethodTest
{
public function __call($name, $arguments)
{
// Note: value of $name is case sensitive.
echo "Calling object method '$name' "
. implode(', ', $arguments). "\n";
}
/** As of PHP 5.3.0 */
public static function __callStatic($name, $arguments)
{
// Note: value of $name is case sensitive.
echo "Calling static method '$name' "
. implode(', ', $arguments). "\n";
}
}
$obj = new MethodTest;
$obj->runTest('in object context');
MethodTest::runTest('in static context'); // As of PHP 5.3.0
class MethodTest
{
public function __call($name, $arguments)
{
// Note: value of $name is case sensitive.
echo "Calling object method '$name' "
. implode(', ', $arguments). "\n";
}
/** As of PHP 5.3.0 */
public static function __callStatic($name, $arguments)
{
// Note: value of $name is case sensitive.
echo "Calling static method '$name' "
. implode(', ', $arguments). "\n";
}
}
$obj = new MethodTest;
$obj->runTest('in object context');
MethodTest::runTest('in static context'); // As of PHP 5.3.0
Study 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
<?php
interface GayaHidup
{
public function berbicara();
public function bernafas();
public function makan();
public function berjalan();
}
interface GayaHidup
{
public function berbicara();
public function bernafas();
public function makan();
public function berjalan();
}
Selanjutnya masukan kode berikut ke KelompokMakanan.php
include 'GayaHidup.php';
Selanjutnya buka file HewanPeliharaan.PHP dan tambahkan kode pada class seperti berikut
class HewanPeliharaan extends KelompokMakan implements GayaHidup
selanjutnya tambahkan code dibawah, code ini berfungsi agar tidak mengalami error karena interface harus di implementasikan
public function berbicara()
{
echo $this->nama.' Berbicara..';
}
public function bernafas()
{
echo $this->nama.' Bernafas..';
}
public function makan()
{
echo $this->nama.' Makan..';
}
public function berjalan()
{
echo $this->nama.' Berjalan..';
}
{
echo $this->nama.' Berbicara..';
}
public function bernafas()
{
echo $this->nama.' Bernafas..';
}
public function makan()
{
echo $this->nama.' Makan..';
}
public function berjalan()
{
echo $this->nama.' Berjalan..';
}
selanjutnya buka Manusia.php lalu tambahkan kode pada class seperti berikut
class Manusia extends KelompokMakan implements GayaHidup
tambahkan code yang sama seperti sebelumnya :
public function berbicara()
{
echo $this->nama.' Berbicara..';
}
public function bernafas()
{
echo $this->nama.' Bernafas..';
}
public function makan()
{
echo $this->nama.' Makan..';
}
public function berjalan()
{
echo $this->nama.' Berjalan..';
}
{
echo $this->nama.' Berbicara..';
}
public function bernafas()
{
echo $this->nama.' Bernafas..';
}
public function makan()
{
echo $this->nama.' Makan..';
}
public function berjalan()
{
echo $this->nama.' Berjalan..';
}
Selanjutnya buka index.php dan tambahkan code seperti berikut:
<?php
include 'Manusia.php';
include 'HewanPeliharaan.php';
$aslam = new Manusia();
$teman = new Manusia();
$Hewan2 = new HewanPeliharaan();
$Hewan1 = new HewanPeliharaan();
$aslam->nama ='Muhammad Aslam Setiawan Riziq ';
$aslam->jenis_kelamin ='laki-laki ';
$aslam->tanggal_lahir ='31/08/2003';
$aslam->makanan ='Daging ';
$Hewan2->nama ='Kambing';
$Hewan2->bersuara =' mbe';
$teman->nama ='Samid';
echo $aslam->bersuara()."<br>";
echo $aslam->berjalan()."<br>";
echo $aslam->makan()."<br>";
echo $aslam->berbicara()."<br>";
echo $aslam->bernafas()."<br>";
echo $teman->bersuara()."<br>";
echo $teman->berjalan()."<br>";
echo $teman->makan()."<br>";
echo $teman->berbicara()."<br>";
echo $teman->bernafas()."<br>";
echo $Hewan1->bersuara()."<br>";
echo $Hewan1->berjalan()."<br>";
echo $Hewan1->makan()."<br>";
echo $Hewan1->berbicara()."<br>";
echo $Hewan1->bernafas()."<br>";
echo $Hewan2->bersuara()."<br>";
echo $Hewan2->berjalan()."<br>";
echo $Hewan2->makan()."<br>";
echo $Hewan2->berbicara()."<br>";
echo $Hewan2->bernafas()."<br>";
?>
include 'Manusia.php';
include 'HewanPeliharaan.php';
$aslam = new Manusia();
$teman = new Manusia();
$Hewan2 = new HewanPeliharaan();
$Hewan1 = new HewanPeliharaan();
$aslam->nama ='Muhammad Aslam Setiawan Riziq ';
$aslam->jenis_kelamin ='laki-laki ';
$aslam->tanggal_lahir ='31/08/2003';
$aslam->makanan ='Daging ';
$Hewan2->nama ='Kambing';
$Hewan2->bersuara =' mbe';
$teman->nama ='Samid';
echo $aslam->bersuara()."<br>";
echo $aslam->berjalan()."<br>";
echo $aslam->makan()."<br>";
echo $aslam->berbicara()."<br>";
echo $aslam->bernafas()."<br>";
echo $teman->bersuara()."<br>";
echo $teman->berjalan()."<br>";
echo $teman->makan()."<br>";
echo $teman->berbicara()."<br>";
echo $teman->bernafas()."<br>";
echo $Hewan1->bersuara()."<br>";
echo $Hewan1->berjalan()."<br>";
echo $Hewan1->makan()."<br>";
echo $Hewan1->berbicara()."<br>";
echo $Hewan1->bernafas()."<br>";
echo $Hewan2->bersuara()."<br>";
echo $Hewan2->berjalan()."<br>";
echo $Hewan2->makan()."<br>";
echo $Hewan2->berbicara()."<br>";
echo $Hewan2->bernafas()."<br>";
?>
Hasilnya seperti ini
Sekian Terimakasih
Comments
Post a Comment