ثابتهای جادویی (PHP Magic Constants)
ثابتهایِ جادویی: جاسوسهایِ هوشمندِ سیستم 🧙♂️✨
در PHP نُه ثابتِ "جادویی" وجود دارد که با تغییرِ مکانِ کد، مقدارشان تغییر میکند. نامِ همهیِ آنها با دو خطِ تیره (Underline) شروع و تمام میشود.
معروفترین جادوگرها:
__LINE__:شماره خطِ فعلی در فایل.__FILE__:مسیرِ کاملِ فایلی که در حالِ اجراست.__DIR__:مسیرِ دایرکتوری (پوشه) فایل.__FUNCTION__:نامِ تابعی که کد داخلِ آن است.__CLASS__:نامِ کلاسِ فعلی.__METHOD__:نامِ کلاس و متد با هم.__NAMESPACE__:فضایِ نامِ فعلی.
__LINE__ را در خط ۱۰ بنویسید مقدارش ۱۰ است و اگر در خط ۱۰۰ بنویسید، مقدارش ۱۰۰ خواهد بود.
پیدا کردنِ پوشه فایل:
این روش برایِ Include کردنِ فایلهایِ دیگر به صورتِ ایمن استفاده میشود:
{code_block('echo "The directory is: " . __DIR__;')}__FILE__ و __LINE__ در زمانِ ذخیرهیِ لاگها (Logs) به شما کمک میکند تا دقیقاً بفهمید خطا در کدام فایل و کدام خط رخ داده است.
بخش تخصصی: مهندسی منطق و پرفورمنس در PHP 🐘⚙️
در سطوحِ حرفهای، اجرایِ کد فقط کافی نیست؛ "چگونگیِ" اجرا و بهینهسازیِ آن تفاوتِ بینِ یک کدِ معمولی و یک معماریِ مقیاسپذیر را رقم میزند.
۱. بهینهسازیِ محاسبات با BCMath
در سیستمهایِ مالی و بانکی، دقتِ اعشاریِ معمولی (Float) به دلیلِ خطاهایِ گرد کردنِ باینری قابلِ اعتماد نیست. برایِ این کار، PHP افزونهای به نام BCMath دارد که محاسبات را با دقتِ نامحدود و به صورتِ رشتهای انجام میدهد تا حتی یک ریال هم در محاسبات جابجا نشود.
۲. ساختارِ HashTable در آرایهها
آرایهها در PHP برخلافِ بسیاری از زبانها، در واقع Ordered Hash Maps هستند. هر زمان که شما عضوی به آرایه اضافه میکنید، PHP یک سیستمِ Bucket و Hash را در پشتِ صحنه مدیریت میکند تا سرعتِ دسترسی به دادهها در حالتِ میانگین O(1) باقی بماند.
۳. مفهومِ Closures و کپسولهسازی
توابعِ بینام (Anonymous) در PHP فقط برایِ کارهایِ موقت نیستند. با استفاده از کلمه کلیدی use، میتوانید متغیرهایی را از اسکوپِ بیرونی به داخلِ تابع وارد کنید و یک Closure بسازید که پایه و اساسِ بسیاری از الگوهایِ طراحی مدرن است.
ifها، ابتدا حالتهایِ خطا را چک کرده و از تابع خارج شوید تا خواناییِ کد به حداکثر برسد.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
با استفاده از ثابتِ جادوییِ مناسب، شماره خطی که کد در آن قرار دارد را چاپ کنید.
<?php
echo __LINE__;
?>
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.