Pembolehubah ajaib PHP

Pembolehubah Ajaib PHP

PHP menyediakan sejumlah besar pemalar pratakrif kepada mana-mana skrip yang dijalankannya.

Walau bagaimanapun, banyak pemalar ditakrifkan oleh perpustakaan sambungan yang berbeza dan hanya akan muncul apabila perpustakaan sambungan ini dimuatkan, atau selepas pemuatan dinamik, atau telah disertakan semasa penyusunan.

Terdapat lapan pemalar ajaib yang nilainya berubah bergantung pada kedudukannya dalam kod.

Sebagai contoh, nilai __LINE__ bergantung pada baris yang terdapat dalam skrip. Pemalar khas ini tidak peka huruf besar dan kecil dan adalah seperti berikut:

__LINE__

Nombor baris semasa dalam fail .

Contoh:

<?php
echo '这是第 “ '  . __LINE__ . ' ” 行';
?>

Hasil keluaran contoh di atas ialah:

Ini ialah baris "ke-2"

__FAIL__

Laluan penuh dan nama fail fail. Jika digunakan dalam fail yang disertakan, mengembalikan nama fail yang disertakan.

Memandangkan PHP 4.0.2, __FILE__ sentiasa mengandungi laluan mutlak (atau laluan mutlak yang diselesaikan dalam kes pautan simbolik), manakala versi sebelum itu kadangkala mengandungi laluan relatif.

Contoh:

<?php
echo '该文件位于 “ '  . __FILE__ . ' ” ';
?>

Hasil keluaran contoh di atas ialah:

Fail terletak di "E:wampwwwtestindex.php"

__DIR__

Direktori tempat letak fail. Jika digunakan dalam fail yang disertakan, mengembalikan direktori tempat fail yang disertakan berada.

Ia bersamaan dengan dirname(__FILE__). Nama direktori tidak termasuk garis miring mengekor melainkan ia adalah direktori akar. (Baharu dalam PHP 5.3.0)

Contoh:

<?php
echo '该文件位于 “ '  . __DIR__ . ' ” ';
?>

Hasil output contoh di atas ialah:

Fail terletak dalam "E:wampwwwtest"

__FUNCTION__

Nama fungsi (baharu dalam PHP 4.3.0). Memandangkan PHP 5 pemalar ini mengembalikan nama fungsi seperti yang ditakrifkan (sensitif huruf besar-besaran). Dalam PHP 4 nilai ini sentiasa huruf kecil.

Contoh:

<?php
function test() {
         echo  '函数名为:' . __FUNCTION__ ;
}
test();
?>

Hasil keluaran contoh di atas ialah:

Nama fungsi ialah: test

__CLASS__

Nama kelas (baharu dalam PHP 4.3.0). Memandangkan PHP 5 pemalar ini mengembalikan nama kelas apabila ia ditakrifkan (sensitif huruf besar-besaran).

Dalam PHP 4 nilai ini sentiasa huruf kecil. Nama kelas termasuk skop di mana ia diisytiharkan (cth. FooBar). Ambil perhatian bahawa sejak PHP 5.4 __CLASS__ juga berfungsi untuk ciri. Apabila digunakan dalam kaedah trait, __CLASS__ ialah nama kelas yang memanggil kaedah trait.

Instance:

<?php
class test {
         function _print() {
                 echo '类名为:'  . __CLASS__ . "<br>";
                 echo  '函数名为:' . __FUNCTION__ ;
         }
}
$t = new test();
$t->_print();
?>

Hasil keluaran contoh di atas ialah:

Nama kelas: ujian

Nama fungsi: _print

__TRAIT__

Nama Trait (baharu dalam PHP 5.4.0). Sejak PHP 5.4.0, PHP melaksanakan kaedah penggunaan semula kod yang dipanggil ciri.

Nama Trait termasuk skop di mana ia diisytiharkan (cth. FooBar).

Ahli yang diwarisi daripada kelas asas ditindih oleh kaedah MyHelloWorld dalam Sifat SayWorld yang disisipkan. Tingkah lakunya konsisten dengan kaedah yang ditakrifkan dalam kelas MyHelloWorld. Susunan keutamaan ialah kaedah dalam kelas semasa mengatasi kaedah ciri, yang seterusnya mengatasi kaedah dalam kelas asas.

<?php
class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}
 
trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}
 
class MyHelloWorld extends Base {
    use SayWorld;
}
 
$o = new MyHelloWorld();
$o->sayHello();
?>

Rutin di atas akan menghasilkan:

Hello World!

__KAEDAH__

Nama kaedah kelas (baru ditambah dalam PHP 5.0.0). Mengembalikan nama kaedah seperti yang ditakrifkan (sensitif huruf besar-kecil).

Contoh:

<?php
function test() {
         echo  '函数名为:' . __METHOD__ ;
}
test();
?>

Hasil keluaran contoh di atas ialah:

Nama fungsi ialah: test

__NAMESPACE__

Nama ruang nama semasa (sensitif huruf besar-kecil). Pemalar ini ditakrifkan pada masa penyusunan (baru dalam PHP 5.3.0).

Instance:

<?php
namespace MyProject;
echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"
?>

Hasil keluaran contoh di atas ialah:

Ruang nama ialah: "Projek Saya"


Meneruskan pembelajaran
||
<?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); ?>
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!