Nulis-Ilmu.com

Tutorial Elektronika dan Komputer

  • Home
  • Elektronika
  • Komputer
  • Javascript

Tutorial PHP OOP Part 16 : Konsep Overloading dalam PHP

1 Desember 2014 By Eko Purnomo

konsep overloading dalam php

Overloading di PHP menyediakan sarana untuk secara dinamis ” menciptakan ” properti dan metode . Entitas dinamis ini diproses melalui “magic method” yang dapat menciptakan berbagai tindakan di dalam class .

Metode overloading dipanggil saat berinteraksi dengan properti atau method yang belum dinyatakan atau tidak terlihat dalam ruang lingkup saat ini. Sisa bagian ini akan menggunakan istilah ” properti tidak dapat diakses ” dan ” method tidak dapat diakses ” untuk merujuk pada kombinasi deklarasi dan visibilitas .

Semua method overloading harus didefinisikan sebagai publik .

Interpretasi PHP dari ” overloading ” berbeda dari kebanyakan pemrograman berorientasi objek lainnya seperti java. Overloading pada umumnya memberikan kemampuan untuk memiliki beberapa method dengan nama yang sama tetapi jumlah dan tipe argumen yang berbeda.

Properti Overloading

Dalam PHP ada empat properti overloading, yaitu:

  1. public void __set ( string $name , mixed $value )
  2. public mixed __get ( string $name )
  3. public bool __isset ( string $name )
  4. public void __unset ( string $name )

Keterangan :

  1. __set() dijalankan ketika menulis data pada properti yang tidak dapat diakses.
  2. __get() digunakan untuk membaca data dari properti yang tidak dapat diakses.
  3. __isset() dipicu dengan memanggil method isset() atau empty() pada properti yang tidak dapat diakses.
  4. __unset() dipanggil saat  method unset() digunakan pada properti yang tidak dapat diakses.

Argumen $name adalah nama dari properti yang sedang diakses dan $value pada method __set() merupakannilai yang diberikan pada properti dengan nama $name.

Properti overloading hanya bekerja dalam konteks objek . Magic method ini tidak akan dipicu dalam konteks statis . Oleh karena itu methog ini tidak boleh dinyatakan sebagai static . Pada PHP 5.3.0 , peringatan akan muncul jika salah satu magic method overloading dinyatakan sebagai static .

Contoh penggunaan properti overloading dari situs php.net

 <?php  
class PropertyTest
{
/** Location for overloaded data. */
private $data = array();

/** Overloading not used on declared properties. */
public $declared = 1;

/** Overloading only used on this when accessed outside the class. */
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(
'Undefined property 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?n";
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><br/>";

$obj = new PropertyTest;
$obj->a = 1;

echo $obj->a . "<br/><br/>";
var_dump(isset($obj->a));
unset($obj->a);
var_dump(isset($obj->a));
echo "<br/>";

echo $obj->declared . "<br/><br/>";

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

Jika program diatas dijalankan akan tampil :

Setting 'a' to '1'
Getting 'a'
1

Is 'a' set?
bool(true)
Unsetting 'a'
Is 'a' set?
bool(false)

1

Let's experiment with the private property named 'hidden':
Privates are visible inside the class, so __get() not used...
2
Privates not visible outside of class, so __get() is used...
Getting 'hidden'


Notice: Undefined property via __get(): hidden in /home/sabrina/www/php/index.php on line 72 in /home/sabrina/www/php/index.php on line 31

Method Overloading

Dalam PHP ada dua method ovrloading, yaitu :

  1. public mixed __call ( string $name , array $arguments )
  2. public static mixed __callStatic ( string $name , array $arguments )

Keterangan :

  1. __call() dipicu ketika memanggil method yang tidak dapat diakses didalam object
  2. __callStatic() dipicu ketika memanggil method yang tidak dapat diakses didalam static

Argumen $name adalah nama dari method yang dipanggil dan $arguments merupakan enumerasi array yang berisi parameter yang dilewatkan pada method $name.

Contoh penggunaan method overloading

 <?php  
class MethodTest
{
public function __call($name, $arguments)
{
// Note: value dari $name adalah case sensitive.
echo "Memanggil method '$name' "
. implode(', ', $arguments). "<br/>";
}

public static function __callStatic($name, $arguments)
{
// Note: value dari $name adalah case sensitive.
echo "Memanggil method '$name' "
. implode(', ', $arguments). "<br/>";
}
}

$obj = new MethodTest;

$obj->Jalankan('->pada konteks Object');
MethodTest::Jalankan('->pada konteks Static');
?>

Jika program diatas dijalankan akan tampil :

Memanggil method 'Jalankan' ->pada konteks Object
Memanggil method 'Jalankan' ->pada konteks Static

Referensi :

  • //php.net/manual/en/language.oop5.overloading.php

Filed Under: PHP

Tutorial PHP OOP Part 15 : Mengenal Metode Re-use Trait

30 November 2014 By Eko Purnomo

mengenal metode reuse trait

Trait adalah fitur baru pada PHP 5.4. Dengan trait kita dimungkinkan untuk menggunakan ulang sebuah kode (re-use). Dalam hasa indonesia, trait berarti sifat. Pengertian trait adalah sebuah mekanisme penggunakan ulang kode dalam sebuah class. Trait berbeda dengan pewarisan class, class abstrak atau object interface. Sebuah trait lebih mirip sebagai penggunaan kode bersama dari pada penurunan class, kerangka class abstrak ataupun implementasi sebuah interface.

Munculnya trait dimaksudkan untuk mempermudah dalam hal penggunaan ulang sebuah kode tanpa adanya batasan hirarki atau kerangka. Sebuah Trait dimaksudkan untuk mengurangi beberapa keterbatasan warisan tunggal dengan memungkinkan pengembang untuk menggunakan kembali secara bebas satu set method di beberapa kelas independen yang tinggal di hierarki kelas yang berbeda.

Membuat Trait

Untuk membuat trait kita menggunakan keyword “trait” diikuti dengan nama trait dan sepasang kurung kurawal untuk menaruh isi trait. Didalam trait kita bisa menaruh satu set method dengan lengkap dengan isinya, juga bisa kerangka method seperti class abstrak. Selain itu kita juga bisa menaruh static dan properti didalam trait.

 trait namaTrait {   
public function namaMethod() {
... //isi method
}
abstract public function namaMethod2();
}

Menggunakan Trait

Untuk menggunakan trait kita menggunakan keyword “use” didalam class. Kita bisa menggunakan trait dengan bebas pada setiap class. Kita bisa menggunakan beberapa trait sekaligus dalam satu class.

class namaClass {  
use namaTrait;
}

Contoh Penggunaan Trait

 <?php   
trait daftarRumus {
public function luas_persegi(){
return "ini luas persegi";
}
}

class Rumus {
use daftarRumus;
}

$rumus = new Rumus();
echo $rumus->luas_persegi();
?>

Pada program diatas kita mempunyai sebuah trait bernama daftarRumus dan sebuah class Rumus yang menggunakan trait tersebut. Jika program diatas dijalankan akan menampilkan “ini luas persegi”, yaitu balikan dari method luas_persegi() dalam trait daftarRumus.

Referensi :

  • //php.net/manual/en/language.oop5.traits.php

Filed Under: PHP

Tutorial PHP OOP Part 14 : Menggunakan Interface dan Implements

29 November 2014 By Eko Purnomo

menggunakan interface dan implements

Interface yang saya maksud disini adalah sebutan singkat saya untuk Object Interface. Interface merupakan istilah untuk konsep yang akan diimplementasi pada class. interface mengijinkan kita membuat method yang harus diimplementasi pada class tanpa harus mendefinisikan bagaimana isi dari method tersebut.

Sekilas Interface memang mirip dengan class abstrak, namun prinsip dan penerapannya berbeda karena Interface memang bukan sebuah class. Interface lebih bertujuan membuat konsep method yang seragam dari pada membuat kerangka class seperti class abstrak.

Membuat Interface

Untuk membuat interface kita menggunakan keyword “interface”, diikuti dengan nama interface kemudian sepasang kurung kurawal {} yang berisi konsep-konsep method yang akan diimplementasi nantinya.

<?php  
interface namaInterface
{
public function namaMethod();
...
}
?>

Contoh membuat interface untuk class Rumus:

<?php  
interface konsepRumus
{
public function luas_persegi();
public function luas_segitiga();
public function luas_lingkaran();
}
?>

Mengimplementasi Interface

Untuk mengimplementasi interface pada class, kita menggunakan keyword “implements” dibelakang nama class.

<?php  
class namaClass implements namaInterface
{
public function namaMethod() {
...
}
}
?>

jika sebuah class mengimplementasi interface, maka pada class tersebut harus mengimplementasi semua method yang ada pada interface.
Contoh :

<?php  
<?php
interface konsepRumus {
public function luas_persegi();
public function luas_segitiga();
public function luas_lingkaran();
}

class Rumus implements konsepRumus {
public function luas_persegi() {
return "ini luas persegi";
}

public function luas_segitiga() {
return "ini luas segitiga";
}

public function luas_lingkaran() {
return "ini luas lingkaran";
}
}

$rumus = new Rumus;
echo $rumus->luas_persegi()."<br/>";
echo $rumus->luas_segitiga()."<br/>";
echo $rumus->luas_lingkaran()."<br/>";
?>

Hal-hal yang perlu diperhatikan dalam menggunakan Interface dan Implements

Dalam menggunakan interface dan implements ada beberapa aturan dan kondisi yang harus kita patuhi, diantaranya :

1. Nama class tidak boleh sama dengan nama interface

Hal ini karena PHP mendeteksi interface sebagai class, meskipun pada kenyataannya hanya berupa konsep saja. Jika nama class dan interface sama maka akan muncul error “Fatal error: Cannot redeclare class”, artinya ada pendeklarasian class kembali.

 <?php   
interface Rumus {
public function luas_persegi();
}

class Rumus implements Rumus {
public function luas_persegi() {
return "ini luas persegi";
}
}
?>

Jika script diatas dijalankan maka akan tampil error berikut ini :

Fatal error: Cannot redeclare class Rumus in /home/sabrina/www/php/index.php on line 8

2. Method pada interface harus diset public

Karena sifatnya yang terbuka dan harus diimplementasi maka semua method pada interface harus diset public atau tidak ditulis sama sekali (sama juga berarti public). Jika diset private atau protected akan muncul error “Fatal error: Access type for interface method”.

 <?php   
interface Rumus {
private function luas_persegi();
}

class Rumus implements Rumus {
public function luas_persegi() {
return "ini luas persegi";
}
}
?>

Jika script diatas dijalankan maka akan tampil error berikut ini :

Fatal error: Access type for interface method konsepRumus::luas_persegi() must be omitted in /home/sabrina/www/php/index.php on line 3

3. Interface tidak boleh memiliki method normal

Sebagaimana fungsi interface yang bertujuan membuat konsep bukan class, maka pada interface tidak boleh ada method normal. Hal inilah salah satu yang membedakan antara interface dan class abstrak.
Jika hal ini terjadi akan muncul error “Fatal error: Interface function cannot contain body “.

 <?php   
interface Rumus {
private function luas_persegi();
public function luas_segitiga() {
return "ini luas segitiga";
}
}

class Rumus implements Rumus {
public function luas_persegi() {
return "ini luas persegi";
}
}
?>

Jika script diatas dijalankan maka akan tampil error berikut ini :

Fatal error: Interface function konsepRumus::luas_segitiga() cannot contain body in /home/sabrina/www/php/index.php on line 6

4. Interface bisa diturunkan

Seperti halnya class, interface juga bisa diturunkan. Untuk membuat interface turunan kita juga menggunakan keyword extends seperti pada class.

 <?php   
interface konsepRumus {
public function luas_persegi();
}

interface konsepRumusBangunDatar extends konsepRumus{
public function keliling_persegi();
}

class Rumus implements konsepRumusBangunDatar {
public function luas_persegi() {
return "ini luas persegi";
}

public function keliling_persegi() {
return "ini keliling persegi";
}
}
$rumus = new Rumus;
echo $rumus->luas_persegi()."<br/>";
?>

5. Interface bisa memiliki konstanta

Interface juga bisa memiliki konstanta seperti class. Untuk mengakses konstanta pada interface sama dengan mengakses konstanta pada umumnya yaitu menggunakan operator :: (titik dua ditulis dobel).

 <?php   
interface konsepRumus {
const pi=3.14;
public function luas_persegi();
}
echo konsepRumus::pi."<br/>";
?>

6. Sebuah class bisa mengimplementasi banyak interface sekaligus

Jika pada abstrak berlaku satu class abstrak untuk satu class, maka pada interface tidak. Kita bisa mengimplementasi beberapa interface sekaligus dalam satu class.

 <?php   
interface konsepRumus1 {
public function luas_persegi();
}
interface konsepRumus2 {
public function luas_segitiga();
}
class rumus implements konsepRumus1,konsepRumus2 {
public function luas_persegi() {
return "ini luas persegi";
}
public function luas_segitiga() {
return "ini luas segitiga";
}
}
?>

Referensi :

  • //php.net/manual/en/language.oop5.interfaces.php
  • //www.duniailkom.com/tutorial-belajar-oop-php-pengertian-object-interface-dalam-pemrograman-berbasis-objek/

Filed Under: PHP

Tutorial PHP OOP Part 13 : Pengertian Class Abstrak

28 November 2014 By Eko Purnomo

pengertian class abstrak

Pada PHP 5 kita mengenal class abstrak dan method abstrak. Class abstrak (abstract class) didefinisikan sebagai class yang tidak bisa diinstantisasi menjadi object. Sebuah class abstrak setidaknya memiliki satu method abstrak (abstract method). Untuk menggunakan sebuah class abstrak, kita harus membuat class turunan dari class abstrak tersebut.

Tujuan dari dibuat abstrak class adalah agar setiap class turunan menggunakan method abstrak pada class induk secara fleksibel. Jadi pada method abstrak di class induk hanya terdapat signature saja tanpa isi yang konkrit.

Membuat Class Abstrak

Untuk membuat class abstrak, kita menggunakan keyword “abstract” didepan keyword class. Sebuah class abstrak harus memiliki setidaknya satu method abstrak. Namun class abstrak juga bisa memiliki properti dan method normal layaknya class konkrit.

abstract class AbstractClass {
....//harus berisi setidaknya satu method abstrak
}

Membuat Method Abstrak

Untuk membuat method abstrak, kita menggunakan keyword “abstract” didepan keyword function. Jika didefinisikan hak akses-nya seperti public, private dan protected maka kita menempatkan keyword abstract tadi didepan hak akses, misal abstract public function namaFunction().

 abstract class AbstractClass  {  
// membuat method abstrak didalam class abstrak
abstract protected function abstractMethod();
}

Yang unik dalam membuat method abstrak ini adalah kita tidak perlu membuat isi method, karena memang method ini abstrak alias tidak nyata. Kita baru akan mengisi method nanti didalam class turunan. Jadi kita hanya bisa membuat method abstrak ini didalam class induk saja.

Penggunaan Class Abstrak dan Method Abstrak

Dalam penggunaan class abstrak dan method abstrak, kita harus memperhatikan beberapa hal penting yang jika tidak dipenuhi akan berakibat error dan program tidak jalan. Hal-hal tersebut diantaranya adalah sebagai berikut :

1. Class Abstrak tidak bisa diinstatisasi

Sebuah class abstrak tidak bisa langsung diinstantisasi menjadi object. Class Abstrak hanya bisa diinstantisasi menjadi object melalui class turunan. Jadi class sbstrak hanya merupakan bluprint dari class turunan.

Contoh berikut ini akan menghasilkoan error ” Fatal error: Cannot instantiate abstract class” jika dieksekusi :

<?php  
abstract class Rumus {
abstract public function luas_lingkaran();
}
$rumus=new Rumus();
?>

2. Class turunan harus mengimplementasi semua method abstrak pada class induk.

Ketika kita membuat class turunan dari class induk yang abstrak, maka kita harus mengimplementasi semua method abstrak yang ada pada class tersebut. Jika ada satu saja method abstrak yang tidak diimplementasi akan muncul error.

Contoh berikut ini akan menghasilkan error ” Fatal error: Class … contains 1 abstract method and must therefore be declared abstract or implement the remaining methods ” jika dieksekusi :

<?php  
abstract class Rumus {
abstract public function luas_lingkaran();
abstract public function luas_persegi();
}

class Luas extends Rumus {
public function luas_lingkaran() {
return "Ini method luas lingkaran";
}
}

$luas=new Luas();
echo $luas->luas_lingkaran();
?>

3. Class abstrak bisa memiliki properti, method dan static

Dalam class abstrak kita bisa membuat properti, method dan static seperti layaknya class konkrit. Untuk lebih jelas perhatikan contoh berikut ini :

<?php  
abstract class Rumus {
var $diameter;

public function jari () {
return $this->diameter / 2;
}

public static $pi=3.14;

abstract public function luas_lingkaran();
}

class Luas extends Rumus {
public function luas_lingkaran() {
return parent::$pi * $this->jari() * $this->jari();
}
}

$luas=new Luas();
$luas->diameter = 10;
echo "Luas Lingkaran dengan diameter ".$luas->diameter." = ".$luas->luas_lingkaran();
?>

Pada script diatas terdapat sebuah class abstrak Rumus yang memiliki sebuah method abstrak luas_lingkaran() tanpa isi. Kemudian class abstrak Rumus juga properti $diameter, sebuah method jari() dan sebuah static $pi.

Selanjutnya class abstrak dicetak pada class turunan Luas dan method abstraknya diimplementasi pada class tersebut sehingga syarat pada item no.2 diatas telah terpenuhi. Pada method luas_lingkaran() di class turunan kita mengakses static $pi dan method jari() pada class induk untuk menghitung luas lingkaran.

Dan untuk melihat hasilnya kita instantisasi class Luas menjadi object, kemudian kita set nilai diameternya=10 dan kita tampilkan hasil perhitungan dari method luas_lingkaran().

Jika benar maka script diatas akan menghasilkan tampilan :

Luas Lingkaran dengan diameter 10 = 78.5

Referensi :

  • //php.net/manual/en/language.oop5.abstract.php

Filed Under: PHP

Tutorial PHP OOP Part 12 : Apa itu Static, Parent dan Self ?

27 November 2014 By Eko Purnomo

Static, Parent dan Self adalah keyword pada PHP OOP yang merupakan perintah dalam membuat dan menangani sebuah static properti atau static method didalam class. Keyword “static” dipakai saat membuat static properti atau static method sedangkan keyword “parent” dan “self” dipakai untuk mengakses properti atau method tersebut didalam class dan class turunannya.

Keuntungan dari membuat static properti dan static method adalah kita bisa mengaksesnya tanpa membuat instantisasi object. Hal ini telah dibahas pada tulisan sebelumnya tentang operator Scope Resolution (::) .

Membuat Static Properti dan Static Method

Untuk membuat static properti dan static method kita menggunakan keyword “static”. Kita juga bisa menggunakan teknik enkapsulasi seperti public, private dan protected dalam membuat static properti dan static method.

Membuat Static Properti

class Classname {
public static $var = Value;
}

Membuat Static Method

class Classname {
public static function aStaticMethod() {
// ...
}
}

Contoh Membuat Static Properti dan Static Method

 <?php  
class Sekolah
{
public static $namaSekolah = 'SMPN 1 WELAHAN';

public static function showSekolah() {
return self::$namaSekolah;
}
}

?>

Mengakses Static Properti dan Static Method

Dalam mengakses  static properti dan static method kita menggunakan operator scope resolution (::). Kita bisa mengakses  static properti dan static method didalam dan diluar class. Untuk mengakses dari luar class kita gunakan nama class, operator :: dan nama static, contoh : MyClass::CONSTANT.

Dan untuk mengakses  static properti dan static method didalam class kita gunakan keyword “self”. Untuk mengakses  static properti dan static method pada class induk (diakses dari class turunan) kita gunakan keyword “parent”. Dengan demikian kita tidak perlu menggunakan variabel $this saat akan mengakses static properti dan static method didalam class.

Mengakses Static Properti dan Static Method pada class (Induk)

 <?php  
class Sekolah {
public static $namaSekolah = 'SMPN 1 WELAHAN';

public function showSekolah() {
return self::$namaSekolah;
}
}

//mengakses static properti secara langsung
print Sekolah::$namaSekolah . "<br/>";

//mengakses static properti dengan static method
print Sekolah::showSekolah() . "<br/>";
?>

Mengakses Static Properti dan Static Method pada class turunan

 <?php  
class Sekolah
{
public static $namaSekolah = 'SMPN 1 WELAHAN';

public static function showSekolah() {
return self::$namaSekolah;
}
}

class Siswa extends Sekolah
{
public static $namaSiswa = 'SABRINA';

public static function showSiswa() {
return self::$namaSiswa ." dari ".parent::$namaSekolah;
}
}

//mengakses static properti class induk secara langsung
print Sekolah::$namaSekolah . "<br/>";

//mengakses static properti class induk dengan method
print Sekolah::showSekolah() . "<br/>";

//mengakses static properti class anak secara langsung
print Siswa::$namaSiswa . "<br/>";

//mengakses static properti class induk dan class anak dengan method
print Siswa::showSiswa() . "<br/>";
?>

Pada program diatas kita membuat dua cuah class, yaitu class Sekolah (class induk) dan class Siswa yang merupakan turunan dari class Sekolah.

Pada class Sekolah terdapat sebuah static properti $namaSekolah dan static method showSekolah(). Pada method showSekolah terlihat kita mengakses static properti $namaSekolah dengan keyword self.

Pada class Siswa yang merupakan turunan dari class Sekolah, sebuah static properti $namaSiswa dan static method showSiswa(). Pada method showSiswa ini terlihat kita mengakses dua buah static properti yaitu $namaSekolah dan $namaSiswa.

Karena  berada pada class induk maka kita mengakses Statis properti $namaSekolah dengan keyword parent. Sementara untuk mengakses static properti $namaSiswa kita menggunakan keyword self.

Jika script diatas dijalankan akan tampil seperti ini :

SMPN 1 WELAHAN
SMPN 1 WELAHAN
SABRINA
SABRINA dari SMPN 1 WELAHAN

Referensi :

  • //php.net/manual/en/language.oop5.static.php

Filed Under: PHP

Tutorial PHP OOP Part 11 : Mengenal Operator Scope Resolution (::)

26 November 2014 By Eko Purnomo

mengenal operator scope resolution::

Operator scope resolution (::) atau dalam bahasa indonesia berarti operator resolusi ruang lingkup adalah operator yang membuat kita diijinkan untuk mengakses static, konstanta, properti dan method pada sebuah class. Operator ini juga disebut dengan Paamayim Nekudotayim. Dengan operator (::) kita bisa mengakses secara langsung sesuatu tanpa instantisasi object. Kita pernah membahas operator ini pada tulisan konstanta pada class.

Ketika kita mereference item ini dari luar definisi class, kita harus menggunakan nama class. Mulai pada PHP 5.3.0 dimungkinkan mereferen class menggunakan variabel. Yang penting nilai variabel tidak boleh berupa keyword, seperti self, parent dan static.

Untuk lebih jelas perhatikan cara menggunakan operator :: berikut ini :

1. Menggunakan operator :: dari luar class

 <?php  
//membuat class
class MyClass {
const KONSTANTA = 'Nilai Konstan';
}

//memanggil konstanta pada class tanpa instantisasi object
echo MyClass::KONSTANTA."<br/>";

//menggunakan variabel dalam mereferen class
$classname = 'MyClass';
echo $classname::KONSTANTA; // As of PHP 5.3.0
?>

2. Menggunakan operator :: dari dalam class

Ada tiga keyword khusus yang bisa dipakai dalam menggunakan operator :: didalam class, yaitu : static, parent dan self.

 <?php  
class MyClass {
const KONSTANTA = 'Nilai Konstan';
}

//membuat class anak turunan dari MyClass
class Anak extends MyClass
{
public static $my_static = 'Variabel Static';
public static function doubleColon() {

echo parent::KONSTANTA . "<br/>";
echo self::$my_static . "<br/>";
}
}

//memanggil method pada class tanpa instantisasi object
//dengan mereferen dari variabel
$classname = 'Anak';
echo $classname::doubleColon(); // As of PHP 5.3.0

//memanggil method pada class tanpa instantisasi object
Anak::doubleColon();
?>

3. Memanggil method pada parent class (class induk)

Ketika class turunan menimpa method yang ada pada class induk (parent class) maka PHP tidak akan memanggil method pada class induk. Jadi bergantung pada class turunan mau menggunakan method pada class induk atau tidak. Cara ini juga dipakai pada Constructors,  Destructors, Overloading, dan definisi Magic method.

 <?php  
class MyClass
{
protected function myFunc() {
echo "MyClass::myFunc()<br/>";
}
}

class Anak extends MyClass
{
// Membuat function yang menimpa function pada induk
public function myFunc()
{
// tapi masih bisa mengakses method dari class induk
parent::myFunc();

echo "Anak::myFunc()<br/>";
}
}

$class = new Anak();
$class->myFunc();
?>

Pada contoh terdapat class induk MyClass yang mempunyai method myFunc dengan perintah menampilkan “MyClass::myFunc()” untuk menandai bahwa tampilan ni dihasilkan oleh method myFunc() pada class induk.

Kemudian kita membuat class turunan bernama Anak dan membuat method bernama myFunc() juga, sama dengan method pada class induk. Kemudian pada method tersebut kita membuat dua perintah, yaitu { parent::myFunc(); } untuk mengakses method myFunc() pada class induk dan { echo “Anak::myFunc()<br/>”; } untuk menampilkan tulisan “Anak::myFunc()”.

Referensi :

  • //php.net/manual/en/language.oop5.paamayim-nekudotayim.php

Filed Under: PHP

  • « Previous Page
  • 1
  • …
  • 43
  • 44
  • 45
  • 46
  • 47
  • …
  • 60
  • Next Page »

Kategori

  • Android
  • Blogging
  • CSS
  • Desain
  • Elektronika
  • HTML
  • Internet
  • Javascript
  • Komputer
  • Mikrokontroler
  • PHP
  • Website

Pos-pos Terbaru

  • Rangkaian Adaptor 12 Volt 3 Ampere
  • 10 Aplikasi Transportasi Online Terbaru 2018
  • 3 Cara Screenshot di Laptop Windows
  • Rangkaian Adaptor 12V 35Ampere
  • Komunitas Desainer Kampung Jepara
  • Solder Yang Bagus dan Berkualitas
  • Cara Melewatkan Parameter ke dalam Fungsi pada Bahasa C
  • Parameter Dalam Bahasa C: Formal dan Aktual
  • Prototipe Fungsi dalam Bahasa C
  • Cara Menggunakan Fungsi dalam Bahasa C
  • Home
  • Privacy
  • Disclaimer
  • Kontak

Copyright © 2024 · Nulis-ilmu.com