ثابت های جادویی (Magic Constants)
«ثابتِ جادویی (Magic Constant)» مقداری آماده در PHP است. این مقدار بسته به محل استفاده عوض می شود. مثل نام کلاس یا شماره خط.
فهرست ثابت های جادویی
این ها مهم ترین ها هستند: __CLASS__، __DIR__، __FILE__، __FUNCTION__، __LINE__، __METHOD__، __NAMESPACE__، __TRAIT__ و ClassName::class.
__CLASS__: نام کلاس جاری
وقتی داخل کلاس استفاده شود، نام کلاس را برمی گرداند.
class Book {
public function where() {
echo __CLASS__;
}
}
$bk = new Book();
$bk->where();
__DIR__ و __FILE__: مسیر پوشه و فایل
__DIR__ مسیر پوشه فایل است. __FILE__ مسیر کامل فایل است.
echo __DIR__;
echo "\n";
echo __FILE__;
echo __FILE__;
__FUNCTION__ و __METHOD__: نام تابع و روش
تابع «روش (Method)» تابعِ داخل کلاس است. این ثابت ها نام ها را برمی گردانند.
function hello() {
echo __FUNCTION__;
}
hello();
class User {
public function save() {
echo __METHOD__;
}
}
$u = new User();
$u->save();
__LINE__: شماره خط
شماره خط فعلی را می دهد. برای دیباگ مثل یافتن جای خطا مفید است.
echo __LINE__;
echo "\n";
echo __LINE__;
__NAMESPACE__ و __TRAIT__
فضای نام (Namespace) برچسبی برای مرتب کردن کلاس هاست. تریت (Trait) بسته قابلِ استفاده مجدد کد است.
namespace App;
class A {
public function n() {
echo __NAMESPACE__;
}
}
$x = new A();
$x->n();
trait Loggable {
public function t() {
echo __TRAIT__;
}
}
class S {
use Loggable;
}
$s = new S();
$s->t();
ClassName::class: نام کامل کلاس
نام کامل کلاس را می دهد؛ همراه فضای نام اگر وجود داشته باشد.
namespace Lib;
class Mailer {}
echo Mailer::class;
گام های عملی
- یک کلاس بساز و
__CLASS__را چاپ کن. - مسیر فایل را با
__FILE__ببین. - خطاها را با
__LINE__رهگیری کن.
نکته: در منبع گفته شده «حساس به بزرگی حروف نیستند». اما در عمل همیشه با حروف بزرگ استفاده کن تا سازگار بماند.
جمع بندی سریع
- ثابت های جادویی وابسته به مکان هستند.
__DIR__و__FILE__برای مسیرها عالی اند.__FUNCTION__و__METHOD__نام ها را می دهند.ClassName::classنام کامل کلاس را می دهد.
برای مطالعه بیشتر درباره ثابت های جادویی PHP و پیوندشان با ثابت ها و همچنین عملگرها به مستندات داخلی ما سر بزن.