← رجوع

PHP Internal Constants Reference (8.4 Ready)

R

UNIXMAN

Feb 14, 2026

Article Image

مرجع شامل لأهم الثوابت في PHP (جاهز لـ PHP 8.4)

في PHP هناك نوعان من الثوابت:

  • ثوابت تقوم أنت بتعريفها باستخدام define() أو const
  • ثوابت مدمجة داخل اللغة (Built-in Constants)

هذه المقالة تركز على الثوابت المدمجة التي تأتي مع PHP نفسها، ولا تحتاج إلى استيراد أو إعداد مسبق. جميعها متوافقة مع PHP 8.3 وآمنة للاستخدام في PHP 8.4.


أولًا: ثوابت المسارات والملفات (Filesystem & Path)

هذه الثوابت مفيدة عند التعامل مع الملفات والمجلدات بطريقة مرنة عبر أنظمة تشغيل مختلفة.

echo DIRECTORY_SEPARATOR; // / في لينكس و macOS ، \ في ويندوز
echo PATH_SEPARATOR;      // : في لينكس ، ; في ويندوز
echo __FILE__;            // المسار الكامل للملف الحالي
echo __DIR__;             // المجلد الحالي
echo __LINE__;            // رقم السطر الحالي في الملف

مثال عملي:

$logFile = __DIR__ . DIRECTORY_SEPARATOR . 'logs' . DIRECTORY_SEPARATOR . 'app.log';

بهذه الطريقة يصبح الكود قابلًا للنقل بين الأنظمة بدون تعديل يدوي.


ثانيًا: الثوابت السحرية (Magic Constants)

تُسمى “سحرية” لأنها تعتمد على السياق الذي تُستخدم فيه.

function testFunction() {
    echo __FUNCTION__;
}

class Example {
    public function run() {
        echo __METHOD__;
    }
}

أهمها:

  • __FUNCTION__ اسم الدالة الحالية
  • __CLASS__ اسم الكلاس
  • __TRAIT__ اسم الـ Trait
  • __METHOD__ اسم الميثود مع الكلاس
  • __NAMESPACE__ اسم الـ Namespace الحالي

تُستخدم كثيرًا في أنظمة التسجيل (Logging) أو في أدوات Debug.


ثالثًا: ثوابت بيئة PHP والنظام

هذه الثوابت تعطيك معلومات مباشرة عن نسخة PHP والنظام.

echo PHP_VERSION;          // مثال: 8.4.0-dev
echo PHP_MAJOR_VERSION;    // 8
echo PHP_MINOR_VERSION;    // 4
echo PHP_RELEASE_VERSION;  // 0
echo PHP_OS;               // Linux أو WINNT أو Darwin
echo PHP_OS_FAMILY;        // Linux أو Windows أو BSD أو macOS
echo PHP_SAPI;             // cli أو apache2handler
echo PHP_EOL;              // نهاية السطر المناسبة للنظام

قيم رقمية مهمة:

echo PHP_INT_MAX;
echo PHP_INT_MIN;
echo PHP_FLOAT_MAX;
echo PHP_FLOAT_MIN;

مفيدة عند كتابة أنظمة تعتمد على حدود رقمية دقيقة أو معالجة بيانات كبيرة.


رابعًا: ثوابت الأخطاء (Error Reporting)

تُستخدم مع error_reporting() أو عند إنشاء أخطاء مخصصة.

error_reporting(E_ALL);

أهم المستويات:

  • E_ERROR
  • E_WARNING
  • E_PARSE
  • E_NOTICE
  • E_DEPRECATED
  • E_USER_ERROR
  • E_USER_WARNING
  • E_USER_NOTICE
  • E_ALL

مثال على إطلاق خطأ مخصص:

trigger_error("Something went wrong", E_USER_WARNING);

فهم هذه الثوابت مهم خصوصًا في بيئات الإنتاج حيث يجب التحكم بدقة في مستوى الإبلاغ عن الأخطاء.


خامسًا: ثوابت أخطاء رفع الملفات

عند رفع ملف عبر $_FILES ستجد كود خطأ مرتبط بالعملية.

if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    echo "Upload successful";
}

أهم القيم:

  • UPLOAD_ERR_OK
  • UPLOAD_ERR_INI_SIZE
  • UPLOAD_ERR_FORM_SIZE
  • UPLOAD_ERR_PARTIAL
  • UPLOAD_ERR_NO_FILE
  • UPLOAD_ERR_NO_TMP_DIR
  • UPLOAD_ERR_CANT_WRITE
  • UPLOAD_ERR_EXTENSION

هذه الثوابت ضرورية عند بناء نظام رفع ملفات احترافي.


سادسًا: ثوابت Streams في CLI

متوفرة فقط عند تشغيل PHP من سطر الأوامر.

fwrite(STDOUT, "Hello\n");
fwrite(STDERR, "Error message\n");
$input = fgets(STDIN);

تُستخدم في بناء أدوات CLI مخصصة أو سكربتات أتمتة.


ملاحظات مهمة

  • هذه الثوابت مدمجة داخل PHP ولا تحتاج استيراد.
  • جميعها متوافقة مع PHP 8.3.
  • آمنة للاستخدام في PHP 8.4.

فهم هذه الثوابت ليس مجرد معرفة نظرية، بل يساعدك في كتابة كود أكثر وعيًا بالبيئة والسياق، وأقل اعتمادًا على القيم الثابتة اليدوية.