ثابت های جادویی
همانطور که در درسهای قبلی گفتیم، ثابتها در زبان 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) باعث چاپ نام این کلاس میشود. البته اگر کلاس خود در داخل یک فضای نام باشد، ابتدا نام فضای نام و سپس کلاس را چاپ میکند. پس وجود این ثابتها در اسکریپتهای مختلف و بسته به مکانی که در آن قرار دارند باعث چاپ نتایج مختلفی میشود.