PHP

PHP — ثابت های جادویی (Magic Constants)

آخرین بروزرسانی: 1404/07/27

ثابت های جادویی (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 و ثابت های معمولی هم نگاهی بنداز.