Trong PHP có 9 hằng số rất đặc biệt, được gọi là hăng số ma thuật, đây là những hằng số với tên định nghĩa sẵn trong PHP, giá trị của hằng số đó bị thay đổi tùy thuộc vào nơi mà bạn sử dụng nó. Có hằng số ma thuật có vẻ hữu ích trong chương trình như __DIR__, tuy vậy hầu hết những hằng này hữu ích hơn cho việc debug, giám sát, quản lý lỗi khi bạn phát triển ứng dụng.
Hằng số __LINE__ trong php
Hằng số này trả về số nguyên chính là số dòng mà __LINE__ được sử dụng (là dòng thứ bao nhiêu trong file code).
// đây là dòng 100 của file code echo __LINE__; // in ra 101 $line = __LINE__; // $line có giá trị 103
Hằng số __FILE__
Hằng số __FILE__ có giá trị là tên file (đường dẫn đầy đủ) của script mà __FILE__ được sử dụng (file sử dụng __FILE__)
Ví dụ: Đây là trích đoạn code trong file /var/website/web1/index.php
echo __FILE__; // in ra: /var/website/web1/index.php
Hằng số __DIR__
Hằng số __DIR__ là chuỗi tên thư mục mà script đang chạy.
Ví dụ: trong file /var/website/web1/index.php
echo __DIR__; // in ra: /var/website/web1
Hằng số __FUNCTION__
Hằng số này trong hàm, có giá trị là chuỗi tên hàm đó.
function myFunction() { return __FUNCTION__; } echo myFunction(); // In ra: myFunction
Hằng số __CLASS__
Hằng số __CLASS__ có giá trị bằng chuỗi tên lớp nơi đang sử dụng __CLASS__.
class TestClass { public function Hi() { return __CLASS__; } } $obj = new TestClass(); echo $obj->Hi(); // In ra: TestClass
Hằng số __TRAIT__
Hằng số __TRAIT__ bên trong trait, có giá trị bằng tên trait hiện tại đang sử dụng. (giống __CLASS__)
Hằng số __METHOD__
Hằng số __METHOD__ chứa tên phương thức đang thực thi.
class TestClass { public function Hi() { return __METHOD__; } } $obj = new TestClass(); echo $obj->Hi(); // In ra: Hi
Hằng số __NAMESPACE__
Hằng số __NAMESPACE__ chứa tên namespace có code đang thực thi.
Hằng số ClassName::class
Bạn có một lớp có tên ClassName, thì ClassName::class là một chuỗi có giá trị bằng tên lớp (ClassName).
Ví dụ, bạn có lớp MyClass được định nghĩa thuộc namespace \Abc\Xyz
use \Abc\Xyz echo MyClass::class; // in ra: \Abc\Xyz\MyClass