ثابت های جادویی (Magic Constants) در PHP
ثابت جادویی یعنی مقدارهایی که PHP خودش بر اساس محل کد تعیین می کند. یعنی لازم نیست خودت مقدار بدهی، چون خودش می فهمد در کدام فایل، کلاس یا تابع هستی. مثلا مثل وقتی در بازی، اسم مرحله روی صفحه نوشته می شود بدون اینکه بنویسیش!
1. ثابت __CLASS__
این ثابت اسم کلاسی را که در آن هستی برمی گرداند. یعنی اگر داخل کلاس باشی، با این ثابت می توانی اسم همان کلاس را ببینی.
<?php
class MyClass {
public function showClass() {
echo __CLASS__;
}
}
$obj = new MyClass();
$obj->showClass();
?>
2. ثابت __DIR__
این ثابت مسیر پوشه (Directory) فایل فعلی را نشان می دهد. یعنی جایی که فایل PHP ذخیره شده است.
<?php
echo __DIR__;
?>
3. ثابت __FILE__
این ثابت مسیر کامل فایل را برمی گرداند، یعنی شامل پوشه و نام فایل.
<?php
echo __FILE__;
?>
4. ثابت __FUNCTION__
اگر داخل تابع (Function) از آن استفاده کنی، نام آن تابع را نمایش می دهد.
<?php
function test() {
echo __FUNCTION__;
}
test();
?>
5. ثابت __LINE__
شماره خطی که در آن نوشته ای را نشان می دهد. مثل شماره صندلی در کلاس درس!
<?php
echo __LINE__;
?>
6. ثابت __METHOD__
وقتی در متد کلاس (Method) استفاده شود، هم نام کلاس و هم متد را برمی گرداند.
<?php
class Car {
public function drive() {
echo __METHOD__;
}
}
$c = new Car();
$c->drive();
?>
7. ثابت __NAMESPACE__
اگر در فضای نام (Namespace) خاصی هستی، این ثابت اسم همان فضا را نشان می دهد. فضای نام یعنی مثل کشوی مخصوص برای کدها.
<?php
namespace Game;
echo __NAMESPACE__;
?>
8. ثابت __TRAIT__
اگر در تریت (Trait) استفاده شود، نام همان تریت را نشان می دهد. تریت یعنی بخشی از کد که بین چند کلاس مشترک است.
<?php
trait ExampleTrait {
public function showTrait() {
echo __TRAIT__;
}
}
class Demo {
use ExampleTrait;
}
$d = new Demo();
$d->showTrait();
?>
9. ثابت ClassName::class
با این ثابت می توانی نام کامل کلاس را برگردانی، حتی با فضای نامش.
<?php
class Student {}
echo Student::class;
?>
نکته: این ثابت ها نسبت به حروف کوچک و بزرگ حساس نیستند. یعنی __LINE__
و __line__
یکی هستند.
جمع بندی سریع
- همه ثابت های جادویی با دو زیرخط شروع و تمام می شوند.
- PHP خودش مقدارشان را مشخص می کند.
- در کلاس ها و توابع خیلی کاربرد دارند.
- برای دیباگ (یافتن خطا) عالی هستند.
- حروف کوچک و بزرگ در آن ها مهم نیست.
برای آشنایی با عملگرهای PHP و ثابت های معمولی هم نگاهی بنداز.