مجالات الأسماء في PHP
- تعريف مجالات الأسماء
- تعريف مجالات الأسماء الفرعية
- تعريف مجالات أسماء متعددة في نفس الملف
- استخدام مجالات الأسماء: الأساسيات
- مجالات الأسماء وخصائص اللغة الديناميكية
- الكلمة المفتاحية namespace و الثابت __NAMESPACE__
- استخدام مجالات الأسماء: التسمية بأسماء بديلة/الاستيراد
- المجال العام
- استخدام مجالات الأسماء: اللجوء إلى الدوال/الثوابت العامة
- قواعد تمييز الأسماء
- الأسئلة المتداولة: أمور يجب عليك معرفتها حول مجالات الأسماء
ما هي مجالات الأسماء؟ التعريف الواسع لمجالات الأسماء هو: طريقة لتغليف العناصر، ويمكن رؤية هذا الأمر كمفهوم مجرد في عدة أماكن. فعلى سبيل المثال، تعمل المجلدات في أنظمة التشغيل المختلفة على تجميع الملفات المرتبطة ببعضها البعض، وهي بمثابة مجال أسماء لتلك الملفات. لنأخذ المثال التالي للتوضيح: يمكن أن يكون الملف foo.txt
موجودًا في كلا المجلدين /home/greg
و /home/other
ولكن لا يمكن لنسختين من هذا الملف أن تكونا في المجلد ذاته، وإضافة لذلك يتطلب الوصول إلى الملف foo.txt
من خارج المجلد /home/greg
إضافة اسم المجلّد إلى اسم الملف باستخدام فاصل المجلدات للحصول على المسار /home/greg/foo.txt
. وهذا المبدأ مشابه لمفهوم مجالات الأسماء في عالم البرمجة.
الإصدار | الوصف |
---|---|
7.0.0 | Added Group use Declarations |
صُمِّمت مجالات الأسماء في لغة PHP لحل مشكلتين تواجهان أصحاب مكتبات وتطبيقات PHP عند كتابة شيفرات تتضمن عناصر قابلة لإعادة الاستخدام مثل الأصناف والدوال:
- التضارب الحاصل بين الشيفرة المكتوبة وبين الأصناف والدوال والثوابت الداخلية الخاصة باللغة أو الخاصة بالطرف الثالث (أصحاب المكتبات والملحقات).
- القدرة على اختصار (أو تقصير) الأسماء الطويلة جدًّا والتي وضعت للتخفيف من المشكلة الأولى وزيادة مقروئية الشيفرة المصدرية.
تقدّم مجالات الأسماء في PHP وسيلة لتجميع الأصناف والواجهات والدوال والثوابت المرتبطة ببعضها البعض. إليك مثالًا عن صيغة مجالات الأسماء في PHP:
المثال 1: صيغة مجالات الأسماء
<?php
namespace my\name;
// راجع صفحة \تعريف مجالات الأسماء
class MyClass {}
function myfunction() {}
const MYCONST = 1;
$a = new MyClass;
$c = new \my\name\MyClass;
// راجع صفحة المجال العام
$a = strlen('hi');
// راجع استخدام مجالات الأسماء: اللجوء إلى الدوال والثوابت العامة
$d = namespace\MYCONST;
// see "namespace operator and __NAMESPACE__
// constant" section
$d = __NAMESPACE__ . '\MYCONST';
echo constant($d);
// راجع فصل "مجالات الأسماء وميزات اللغة الديناميكية"
?>
ملاحظة: أسماء مجالات الأسماء PHP و php والأسماء المركبة منها (مثل PHP\Classes
) هي أسماء محجوزة في اللغة ولا يمكن استخدامها في الشيفرة.