Username Password

Lost Password
View Thread
Explore Your Brain » Pemrograman » PHP
Double colon di php
Username
Password
Register FAQ Members List Today's Posts Search

Print Thread

03-07-2009 07:12 AM Double colon di php
User Avatar

insomniacz
Genin


Posts: 50
Joined: 29.06.09
Pagi ini, setelah dari tadi malam malas tidur. Gue nyoba nyari double colon (::) di manual php. Gue nyari double colon, karena lagi mau nyobain symfony. Setelah diliat-liat ternyata di simfony banyak double colon-nya :: . Ketemu juga, gue cobain contoh-contoh yang ada di manual php. Sebelumnya mohon maaf, bukan bermaksud membandingkan PHP dengan JAVA, PHP is PHP and Java is Java. Ok, kita masuk contoh yang pertama yang ada di manual PHP.

<?php

class Induk {
const KONSTANTA = ā€˜ini KONSTANTA’;
}
echo Induk::KONSTANTA;

?>

Jika ditulis kedalam bahasa Java, kurang lebih seperti ini :

class Induk {
final String KONSTANTA = ā€œini KONSTANTAā€;

public static void main(String[] args) {
System.out.println(new Induk().KONSTANTA);
}
}

Kesimpulan :
- Jika di PHP menggunakan ::, maka di Java menggunakan .

Contoh yang kedua :

<?php

class Induk {
const KONSTANTA = ā€˜ini KONSTANTA’;
}

class Anak extends Induk {
public static $variabel = ā€˜variabel static’;

public static function doubleColon() {
echo parent::KONSTANTA . ā€œ\nā€;
echo self::$variabel . ā€œ\nā€;
}
}
Anak::doubleColon();

?>
Jika ditulis kedalam bahasa Java, kurang lebih seperti ini :

class Induk {
final String KONSTANTA = "Ini konstanta";
}

class Anak extends Induk {
public static String variabel = "ini variabel";

public static void doubleColon() {
System.out.println(new Induk().KONSTANTA);
System.out.println(variabel);
}

public static void main(String[] args) {
Anak.doubleColon();
}
}

Kesimpulan :

- Kali ini kesimpulannya agak panjang. Focus pertama kita adalah di class Anak yang mana class Anak mewarisi class Induk(inheritance). Di class Anak mempunyai 1 attribute/field & satu method/function. Di class Induk mempunyai 1 konstanta.

- Focus kedua kita adalah di method/function doubleColon(). Di method/function doubleColon() berisi perintah untuk menampilkan nilai konstanta yang berada di class Induk dengan cara seperti berikut :
echo parent::KONSTANTA; dapat kita simpulkan bahwa untuk memanggil/menggunakan KONSTANTA di class Induk harus menggunakan kata kunci parent diikuti :: dan nama KONSTANTA-nya. Sementara di Java seperti berikut :
System.out.println(new INDUK().KONSTANTA); dengan membuat instance dari class INDUK kemudian diikuti . dan nama KONSTANTA-nya.
Kemudian di dalam method/function doubleColon() juga terdapat perintah untuk menampilkan attribute/field yang terdapat di class Anak dengan cara berikut :
echo self::$variabel; dapat kita simpulkan bahwa untuk memanggil/menggunakan $variabel di class Anak menggunakan kata kunci self diikuti :: dan nama variable-nya. Sementara di Java seperti berikut :
System.out.println(variabel);
Kemudian function/method doubleColon() dieksekusi/dipanggil seperti berikut :
Anak::doubleColon();
Kalau di Java seperti berikut :
Anak.doubleColon(); tidak perlu di buat instance karena bersifat static





Sekarang kita masuk ke contoh yang ke-3 atau yang terakhir mengenai double colon (::).

<?php

class Induk {
protected function fungsiSaya() {
echo ā€œIni function fungsiSaya() di class Indukā€;
}
}
class Anak extends Induk {
public function fungsiSaya() {
parent::fungsiSaya();
echo ā€œIni function fungsiSaya() di class Anakā€;
}
}
$instance = new Anak();
$instance->fungsiSaya();

?>

Kalau di tulis kedalam bahasa Java, maka kurang lebih seperti berikut :

class Induk {
protected void fungsiSaya() {
System.out.println(ā€œIni function fungsiSaya di class Indukā€);
}
}
class Anak extends Induk {
public void fungsiSaya() {
super.fungsiSaya();
System.out.println(ā€œIni function fungsiSaya di class Anakā€);
}
public static void main(String[] args) {
new Anak().fungsiSaya();
}
}


Kesimpulan :
- :: digunakan untuk memanggil/menggunakan/mengeksekusi function class Induk yang di-override di class turunan yaitu function fungsiSaya(). Karena kita memanggil function yang berada di class Induk, maka harus didahului dengan kata kunci parent kemudian :: . Karena function fungsiSaya() tidak bersifat static, maka harus dibuat instance-nya terlebih dahulu jika ingin mengeksekusi function fungsiSaya().

- Sementara di Java, kita harus menggunakan kata kunci super.







Kesimpulan Terakhir :

- :: digunakan untuk mengakses Konstanta dari luar class dengan cara menyebutkan nama class kemudian diikuti dengan :: dan nama KONSTANTA, contoh (Induk::KONSTANTA), karena di PHP jika mendeklarasikan const tanpa membuat class maka akan terjadi error, contoh seperti berikut :

<?php
const KONSTANTA = ’INI KONSTANTA’;
echo KONSTANTA;
?> // Mulai PHP versi 5.3.0 hal seperti ini telah diijinkan

Kita harus membuat seperti berikut agar tidak terjadi error :
<?php
define(ā€œKONSTANTAā€, ā€œINI KONSTANTAā€);
echo KONSTANTA;
?>

- Di PHP terdapat kata kunci parent dan self untuk mengeksekusi attribute/field & function/method yang terdapat di class Induk dan class Turunan-nya, dengan aturan penulisan seperti berikut: parent::nama_field/nama_function() untuk class Induk
self::nama_field/nama_function() untuk class Turunan

- :: digunakan pula untuk memanggil/menggunakan/mengeksekusi function class Induk yang di-override di class turunan-nya, dengan cara seperti berikut :
parent::nama_function()


Akhirnya selesai juga……


ā€ MENCOBA MENEMBUS RUANG WAKTU YANG LICIK, CURANG & ANGKUH ā€.


"Tolong dikoreksi jika ada kesalahan.........."
 
Offline
Jump to Forum:
Forum powered by fusionBoard
Share this Thread
URL:
BBcode:
HTML:
Similar Threads
Thread Forum Replies Last Post
[HELP] G bisa Open Drive Double Klik. Windows 2 18-03-2011 23:30
3OH!3-Double Vision Video 1 22-08-2010 21:16
[ASK] pc share double OS.. Windows 8 22-04-2010 09:44
Austrian Death Machine - Double Brutal (2CD) 2009 MP3 Album 10 19-10-2009 15:51
[HeLp] koq bisa doubLe gini yach ?? Explore CMS PHP-Fusion 7 11-04-2009 22:14
Copyright © 2007-2016