ثابت های جادویی

همانطور که در درس‌های قبلی گفتیم، ثابت‌ها در زبان php با استفاده از const و ()define ایجاد می‌شوند. به صورت پیشفرض یک سری ثابت‌ها در php تعریف شده که که به نام ثابت‌های جادویی (Magic Constant) معروف هستند و ما می‌توانیم در هر جای پروژه از مقادیر آنها استفاده کنیم. مشخصه‌ای که این ثابت‌ها دارند این است که، قبل و بعد از نام آنها دو علامت زیر خط (__) وجود دارد. در جدول زیر لیست این ثابت‌های جادویی آورده شده است :

ثابت جادویی کاربرد
__LINE__ شماره‌ی خط جاری رو بر می‌گرداند.
__FILE__ آدرس فایل جاری به همراه نام فایل را بر می‌گرداند.
__DIR__ آدرس فایل جاری را بدون نام فایل بر می‌گرداند.
__FUNCTION__ نام تابعی که در آن حضور دارد را بر می‌گرداند.
__CLASS__ نام کلاس جاری را بر می‌گرداند.
__TRAIT__ نام trait جاری را بر می‌گرداند.
__METHOD__ نام متد جاری در داخل کلاس را بر می‌گرداند.
__NAMESPACE__ نام namespace جاری را بر می‌گرداند.

مثال زیر نحوه عملکرد این ثابت‌ها را نشان می‌دهد :

  1: <?php
  2:     namespace MagicNamespace
  3:     {
  4:         class MagicClass
  5:         {
  6:             public function __construct()
  7:             {
  8:                 echo  __LINE__      .'<br/>';
  9:                 echo  __FILE__      .'<br/>';
 10:                 echo  __DIR__       .'<br/>';
 11:                 echo  __FUNCTION__  .'<br/>';
 12:                 echo  __CLASS__     .'<br/>';   
 13:                 echo  __METHOD__    .'<br/>';
 14:                 echo  __NAMESPACE__ .'<br/>';
 15:             }
 16:         }
 17:         
 18:         $magicClass = new MagicClass();    
 19:     }
 20: ?>
8
C:\wamp\www\Tutorials\index.php
C:\wamp\www\Tutorials
__construct
MagicNamespace\MagicClass
MagicNamespace\MagicClass::__construct
MagicNamespace

همانطور که در کد بالا مشاهده می‌کنید وجود مثلا ثابت جادویی __LINE__ در خط 8 باعث چاپ عدد 8 و وجود ثابت جادویی __CLASS__ در خط 21 و در داخل کلاس MagicClass (خط 17) باعث چاپ نام این کلاس می‌شود. البته اگر کلاس خود در داخل یک فضای نام باشد، ابتدا نام فضای نام و سپس کلاس را چاپ می‌کند. پس وجود این ثابت‌ها در اسکریپت‌های مختلف و بسته به مکانی که در آن قرار دارند باعث چاپ نتایج مختلفی می‌شود.