المتغيرات المعرفة مسبقًا في PHP

من موسوعة حسوب
< PHP
اذهب إلى: تصفح، ابحث

تقدّم PHP عددًا كبيرًا من المتغيرات المعرّفة مسبقًا ضمن الشيفرات العاملة بهذه اللغة، ولكن لا يمكن توثيق الكثير من هذه المتغيّرات بشكل كامل لأنّها تعتمد على الخادم الذي تعمل عليه الشيفرة، ونسخة الخادم وإعداداته، وعوامل أخرى. بعض هذه المتغيّرات غير متوفّر عند تشغيل PHP في سطر الأوامر. للحصول على قائمة بهذه المتغيرات يمكنك الاطلاع على قسم المتغيّرات المحجوزة والمعرّفة مسبقًا.

تحذير: في الإصدار 4.2.0 وما بعده من PHP أصبح الموجّه register_globals يحمل القيمة off، وهو من التغييرات الكبيرة في PHP. فامتلاك هذا الموجّه لقيمة off يؤثر على مجموعة المتغيرات المعرّفة مسبقًا والموجودة ضمن النطاق العام. على سبيل المثال للوصول إلى المتغير DOCUMENT_ROOT يجب استخدام ‎$_SERVER['DOCUMENT_ROOT']‎ بدلاً من ‎$DOCUMENT_ROOT، أو استخدام ['‎$_GET['id من العنوان http://www.example.com/test.php?id=3 بدلاً من ‎$id، أو استخدام ‎$_ENV['HOME']‎ بدلاً من ‎$HOME.

للمزيد من المعلومات المرتبطة بهذا التغيير، راجع قسم الإعدادات الخاصّ بالموجه register_globals، والقسم الخاص بالأمان مع استخدام المتغيرات العامة، إضافة إلى تصريحات الإطلاق (Release Announcements) الخاصة بالإصدارين 4.1.0 و 4.2.0 من PHP.

يفضّل استخدام المتغيرات المحجوزة والمعرّفة مسبقًا في PHP مثل المصفوفات ذوات النطاق العام العالي (superglobals).

تقدّم PHP من الإصدار 4.1.0 وما بعده مجموعةً إضافيةً من المصفوفات المعرّفة مسبقًا والتي تحتوي على متغيّرات خاصّة بخادم الويب (إن كان استخدامها ممكنًا)، وبيئة التطوير، ومدخلات المستخدم. تمتاز المصفوفات الجديدة بكونها ضمن النطاق العام بصورة تلقائية، بمعنى أنّها متوفّرة تلقائيًا في جميع النطاقات؛ ولهذا السبب يطلق على هذه المصفوفات تسمية ذوات النطاق العام العالي (superglobals). (لا يمكن تعريف ذوات النطاق العام العالي من طرف المستخدم في PHP).

أدناه قائمة بذوات النطاق العام العالي، وللاطلاع على قائمة مفصّلة بمحتويات هذه المصفوفات وللحصول على المزيد من المعلومات حول المتغيرات المعرّفة مسبقًا في PHP وخصائصها، يمكن الاطلاع على قسم المتغيرات المحجوزة والمعرّفة مسبقًا. يمكن أيضاً ملاحظة أنّ المتغيّرات القديمة الطويلة والمعرّفة مسبقًا (‎$HTTP_*_VARS) ما زالت موجودةً حتى الآن. في الإصدار 5.0.0 من PHP وما بعده يمكن تعطيل المصفوفات المتغيّرة الطويلة والمعرّفة مسبقًا وذلك بواسطة الموجّه register_long_arrays.

ملاحظة: لا يمكن استخدام ذوات النطاق العام العالي كمتغيرات للمتغيرات (variable variables) ضمن الدوال أو توابع الأصناف.

ملاحظة: على الرغم من إمكانية وجود كلّ من ذوات النطاق العام العالي و HTTP_*_VARS في نفس الوقت، فإنّهما ليسا متطابقين؛ لذا فإن تغيير قيمة أحدهما لن يؤثّر على قيمة الآخر.

في حال عدم تعيين متغيّرات معيّنة في الموجّه variables_order فإن المصفوفات المعرّفة مسبقًا والتي تلائم هذه المتغيّرات ستترك فارغة أيضًا.

مصادر