PHP menyediakan sejumlah besar konstanta yang telah ditentukan sebelumnya untuk skrip apa pun yang dijalankannya.
Namun, banyak konstanta yang ditentukan oleh pustaka ekstensi yang berbeda dan hanya akan muncul ketika pustaka ekstensi ini dimuat, baik dimuat secara dinamis atau disertakan pada waktu kompilasi.
Ada delapan konstanta ajaib yang nilainya berubah bergantung pada lokasinya dalam kode.
Misalnya, nilai __LINE__ bergantung pada lokasi baris di skrip. Konstanta khusus ini tidak peka huruf besar-kecil dan adalah sebagai berikut:
Nomor baris saat ini dalam file.
<?php gema ' Ini adalah nomor baris " ' .__ LINE__ . ' " ?
Hasil keluaran dari contoh di atas adalah:
Ini adalah baris "2"
Jalur lengkap dan nama file dari file tersebut. Jika digunakan dalam file yang disertakan, kembalikan nama file yang disertakan.
Sejak PHP 4.0.2, __FILE__ selalu berisi jalur absolut (atau jalur absolut yang diselesaikan dalam kasus tautan simbolik), sedangkan versi sebelumnya terkadang berisi jalur relatif.
Contoh:
<?php gema ' File terletak di " ' .__ FILE__ . ' " ' ? >
Hasil keluaran dari contoh di atas adalah:
File terletak di "E:wampwwwtestindex.php"
Direktori dimana file tersebut berada. Jika digunakan dalam file yang disertakan, mengembalikan direktori tempat file yang disertakan berada.
Ini setara dengan dinama(__FILE__). Nama direktori tidak menyertakan tanda garis miring kecuali direktori tersebut adalah direktori root. (Baru di PHP 5.3.0)
<?php gema ' File terletak di " ' .__ DIR__ . ' " ' ? >
Hasil keluaran dari contoh di atas adalah:
Filenya terletak di " E:wampwwwtest "
Nama fungsi (baru di PHP 4.3.0). Sejak PHP 5, konstanta ini mengembalikan nama fungsi ketika didefinisikan (peka huruf besar/kecil). Di PHP 4 nilai ini selalu huruf kecil.
<?php fungsi tes ( ) { gema ' Nama fungsi : ' __FUNGSI__ ; tes ( ) ? >
Hasil keluaran dari contoh di atas adalah:
Nama fungsi: tes
Nama kelas (baru di PHP 4.3.0). Sejak PHP 5, konstanta ini mengembalikan nama kelas ketika didefinisikan (peka huruf besar/kecil).
Di PHP 4 nilai ini selalu huruf kecil. Nama kelas mencakup ruang lingkup deklarasinya (misalnya FooBar). Perhatikan bahwa sejak PHP 5.4 __CLASS__ juga berfungsi untuk sifat. Saat digunakan dalam metode sifat, __CLASS__ adalah nama kelas yang memanggil metode sifat tersebut.
<?php kelas tes { fungsi _cetak ( ) { gema ' Nama kelas : ' __CLASS__ ' Nama fungsi : ' __FUNGSI__ ; } $t = baru tes ( ) ; $t -> _cetak ( ) ? >
Hasil keluaran dari contoh di atas adalah:
Nama kelas: tes Nama fungsi: _print
Nama sifat tersebut (baru di PHP 5.4.0). Sejak PHP 5.4.0, PHP telah mengimplementasikan metode penggunaan kembali kode yang disebut ciri.
Nama sifat mencakup cakupan deklarasinya (misalnya, FooBar).
Anggota yang diwarisi dari kelas dasar diganti dengan metode MyHelloWorld di Sifat SayWorld yang disisipkan. Perilakunya konsisten dengan metode yang ditentukan di kelas MyHelloWorld. Urutan prioritasnya adalah bahwa metode di kelas saat ini akan menggantikan metode sifat, yang selanjutnya akan menggantikan metode di kelas dasar.
<?php kelas Basis { publik fungsi ucapkan Halo ( ) { gema ' Halo ' ; } } sifat KatakanDunia { publik fungsi ucapkan Halo ( ) { induk :: sayHello ( ) ; ' Dunia! ' ; } } kelas Halo Duniaku meluas Basis { menggunakan KatakanDunia ; } $o = baru Halo Dunia Saya ( ) ; $o -> ucapkan Halo ( ) ? >
Rutinitas di atas akan menghasilkan:
Halo Dunia!
Nama metode kelas (baru di PHP 5.0.0). Mengembalikan nama metode seperti yang didefinisikan (peka huruf besar/kecil).
Contoh:
<?php fungsi tes ( ) { gema ' Nama fungsi : ' __METODE__ ; tes ( ) ? >
Hasil keluaran dari contoh di atas adalah:
Nama fungsi: tes
Nama namespace saat ini (peka huruf besar/kecil). Konstanta ini ditentukan pada waktu kompilasi (baru di PHP 5.3.0).
Contoh:
<?php ruang nama Proyek Saya ; gema ' Namespacenya adalah: " ' , __NAMESPACE__ , ' " ' ; // Keluaran "Proyek Saya" ?>
Hasil keluaran dari contoh di atas adalah:
Namespacenya adalah: "Proyek Saya"