اذهب إلى المحتوى

السؤال

نشر

في أي مشروع مبني بإستخدام PHP أجد أنه يتم إستعمال namespaces بشكل أساسي (في الغالب مع composer) ولكنني لم أفهم فائدة هذا الأمر جيدًا

أليست namespace تستعمل في إستدعاء الأصناف classes فقط، أم أن لها فائدة أخرى؟

ولماذا لا نستعمل require أو include فقط لإتمام هذه المهمة؟

Recommended Posts

  • 1
نشر

قد تتشابه استخدامات use (أو Namespaces) و require ظاهريًا حيث تستخدم لجلب واستخدام شيفرات من وحدات برمجية أو ملفات php أخرى لكنها تختلف فعليًا كليًا عن بعضها

  • requrie يفيد استخدامها في جلب محتويات ملف php كافة من متغيرات وأصناف إلى الملف الحالي، يصبح كأننا قمنا بنسخ ولصق محتويات ذلك الملف مكان استخدام require، ويجب ذكر المسار المطلق لملف الوحدة في كل مرة:  
    // module.php
    $number = 5;
    class Foo {}
    
    // index.php
    require('path/to/module.php');
    
    new Foo()
    echo $number + 2; // 7
    
    // يساوي
    $number = 5;
    class Foo {}
    new Foo()
    echo $number + 2;

     

  • use تستخدم لتعريف الأصناف فقط المستخدمة من الوحدات الأخرى في الملف الحالي، وهي تساوي إعادة تعريف الصنف في الملف الحالي، وميزة ذلك أننا لا نضطر لذكر المسار المطلق للوحدة في كل مرة نريد استخدامها بل نكتفي بذكر اسم النطاق مرة واحدة ضمن الملف في الأعلى وسيتولى composer بتوليد الربط الصحيح بين تلك الملفات:
    // module.php
    namespace Module;
    class Foo { }
    
    // index.php
    use Module\Foo;
    $foo1 = new Foo();
    $foo2 = new Foo();
    
    // يساوي
    class Foo { }
    $foo1 = new Foo();
    $foo2 = new Foo();

     

يمكنك الاستفادة من قراءة المقالات التالية:

 

  • 1
نشر

الnamespace قامت بحل مشكلتين في php :

1 - إنها تسمح بتنظيم أفضل من خلال تجميع ال classes التي تعمل معًا لأداء مهمة ما .

2 - أنها تسمح باستخدام نفس الاسم لأكثر من ال class واحد .

ومن فوائده أيضاً في ال composer هو استدعاء مسار الملف كامل أثناء عملية ال autoload .

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...