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.
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 ā.