مجالات الأسماء في PHP

من موسوعة حسوب
< PHP
مراجعة 04:26، 20 يناير 2018 بواسطة Mohammed Taher (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

ما هي مجالات الأسماء؟ التعريف الواسع لمجالات الأسماء هو: طريقة لتغليف العناصر، ويمكن رؤية هذا الأمر كمفهوم مجرد في عدة أماكن. فعلى سبيل المثال، تعمل المجلدات في أنظمة التشغيل المختلفة على تجميع الملفات المرتبطة ببعضها البعض، وهي بمثابة مجال أسماء لتلك الملفات. لنأخذ المثال التالي للتوضيح: يمكن أن يكون الملف foo.txt موجودًا في كلا المجلدين ‎/home/greg و ‎/home/other ولكن لا يمكن لنسختين من هذا الملف أن تكونا في المجلد ذاته، وإضافة لذلك يتطلب الوصول إلى الملف foo.txt من خارج المجلد ‎/home/greg إضافة اسم المجلّد إلى اسم الملف باستخدام فاصل المجلدات للحصول على المسار ‎/home/greg/foo.txt. وهذا المبدأ مشابه لمفهوم مجالات الأسماء في عالم البرمجة.

الإصدار الوصف
7.0.0 Added Group use Declarations

صُمِّمت مجالات الأسماء في لغة PHP لحل مشكلتين تواجهان أصحاب مكتبات وتطبيقات PHP عند كتابة شيفرات تتضمن عناصر قابلة لإعادة الاستخدام مثل الأصناف والدوال:

  1. التضارب الحاصل بين الشيفرة المكتوبة وبين الأصناف والدوال والثوابت الداخلية الخاصة باللغة أو الخاصة بالطرف الثالث (أصحاب المكتبات والملحقات).
  2. القدرة على اختصار (أو تقصير) الأسماء الطويلة جدًّا والتي وضعت للتخفيف من المشكلة الأولى وزيادة مقروئية الشيفرة المصدرية.

تقدّم مجالات الأسماء في 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) هي أسماء محجوزة في اللغة ولا يمكن استخدامها في الشيفرة.

مصادر