دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / ثابت‌های جادویی (PHP Magic Constants)

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

30 دقیقه Article

ثابت‌هایِ جادویی: جاسوس‌هایِ هوشمندِ سیستم 🧙‍♂️✨

در PHP نُه ثابتِ "جادویی" وجود دارد که با تغییرِ مکانِ کد، مقدارشان تغییر می‌کند. نامِ همه‌یِ آن‌ها با دو خطِ تیره (Underline) شروع و تمام می‌شود.

معروف‌ترین جادوگرها:

  • __LINE__: شماره خطِ فعلی در فایل.
  • __FILE__: مسیرِ کاملِ فایلی که در حالِ اجراست.
  • __DIR__: مسیرِ دایرکتوری (پوشه) فایل.
  • __FUNCTION__: نامِ تابعی که کد داخلِ آن است.
  • __CLASS__: نامِ کلاسِ فعلی.
  • __METHOD__: نامِ کلاس و متد با هم.
  • __NAMESPACE__: فضایِ نامِ فعلی.
چرا جادویی؟ چون مقدارِ آن‌ها ثابت نیست! اگر شما __LINE__ را در خط ۱۰ بنویسید مقدارش ۱۰ است و اگر در خط ۱۰۰ بنویسید، مقدارش ۱۰۰ خواهد بود.

پیدا کردنِ پوشه فایل:

این روش برایِ Include کردنِ فایل‌هایِ دیگر به صورتِ ایمن استفاده می‌شود:

{code_block('echo "The directory is: " . __DIR__;')}
دی‌باگ کردن: استفاده از __FILE__ و __LINE__ در زمانِ ذخیره‌یِ لاگ‌ها (Logs) به شما کمک می‌کند تا دقیقاً بفهمید خطا در کدام فایل و کدام خط رخ داده است.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی منطق و پرفورمنس در PHP 🐘⚙️

در سطوحِ حرفه‌ای، اجرایِ کد فقط کافی نیست؛ "چگونگیِ" اجرا و بهینه‌سازیِ آن تفاوتِ بینِ یک کدِ معمولی و یک معماریِ مقیاس‌پذیر را رقم می‌زند.

۱. بهینه‌سازیِ محاسبات با BCMath

در سیستم‌هایِ مالی و بانکی، دقتِ اعشاریِ معمولی (Float) به دلیلِ خطاهایِ گرد کردنِ باینری قابلِ اعتماد نیست. برایِ این کار، PHP افزونه‌ای به نام BCMath دارد که محاسبات را با دقتِ نامحدود و به صورتِ رشته‌ای انجام می‌دهد تا حتی یک ریال هم در محاسبات جابجا نشود.

۲. ساختارِ HashTable در آرایه‌ها

آرایه‌ها در PHP برخلافِ بسیاری از زبان‌ها، در واقع Ordered Hash Maps هستند. هر زمان که شما عضوی به آرایه اضافه می‌کنید، PHP یک سیستمِ Bucket و Hash را در پشتِ صحنه مدیریت می‌کند تا سرعتِ دسترسی به داده‌ها در حالتِ میانگین O(1) باقی بماند.

۳. مفهومِ Closures و کپسوله‌سازی

توابعِ بی‌نام (Anonymous) در PHP فقط برایِ کارهایِ موقت نیستند. با استفاده از کلمه کلیدی use، می‌توانید متغیرهایی را از اسکوپِ بیرونی به داخلِ تابع وارد کنید و یک Closure بسازید که پایه و اساسِ بسیاری از الگوهایِ طراحی مدرن است.

نکته طلایی: همیشه برایِ شرط‌هایِ پیچیده از Early Return استفاده کنید. به جایِ تودرتو کردنِ ifها، ابتدا حالت‌هایِ خطا را چک کرده و از تابع خارج شوید تا خواناییِ کد به حداکثر برسد.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

نمایش خط جاری Easy
سوال تمرین

با استفاده از ثابتِ جادوییِ مناسب، شماره خطی که کد در آن قرار دارد را چاپ کنید.

پاسخ تمرین
PHP
<?php
echo __LINE__;
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.