كيفية تحديد المسار إلى autoload.php مع الملحن
-
21-12-2019 - |
سؤال
لدي مشروع الملحن، يطلق عليه MyVendor\Database
.يستخدم هذا المشروع الملحن والتحميل التلقائي.هناك عدة ملفات في هذا المشروع تحتوي على:
require_once __DIR__."/../vendor/autoload.php";
من أجل الاستفادة من التحميل التلقائي.
كل شيء يعمل بشكل رائع، حتى أقوم بتضمينه MyVendor\Database
في مشروع آخر.
لدي مشروع آخر، اتصل به MyVendor\CoolPackage
يتطلب MyVendor\Database
.
أقوم بتشغيل تثبيت الملحن على CoolPackage
ويتم تنزيله MyVendor\Database
في مجلد البائع.
لكن المشكلة من هنا هي ملفاتي بالداخل vendor\MyVendor\Database
تفشل لأنهم يتصلون require_once __DIR__."/../vendor/autoload.php"
, ، ولكن لا يوجد مجلد بائع بداخله \vendor\MyVendor\Database
.
المحلول
في الخاص بك composer.json
قمت بتحديد نظام التحميل التلقائي.لأسباب اكتشفتها بنفسك الآن، ليس من الجيد استدعاء خاصية التحميل التلقائي للملحن داخل أي من الملفات التي من المفترض أن تكون قابلة للتحميل تلقائيًا ليس فقط داخل هذا التطبيق أو الوحدة، ولكن في أي تطبيق آخر أيضًا.
بشكل أساسي، يجب تقسيم الملفات الموجودة في أي مشروع Composer بناءً على تعريف التحميل التلقائي PSR-0 أو 4:إما أنهم يقومون فقط بإعلان الفئات أو الوظائف دون أي آثار جانبية (مثل تنفيذ التعليمات البرمجية)، أو يقومون بتنفيذ التعليمات البرمجية دون تحديد الفئات أو الوظائف.يمكن تحميل الملفات السابقة فقط تلقائيًا (باستثناء الوظائف، والتي لن يكون من الممكن الإعلان عنها دائمًا إلا عن طريق تحميل الملف الذي يحتوي عليها باستخدام ملف files
قسم التحميل التلقائي)، لا ينبغي تحميل الأخير تلقائيًا.
وبعد ذلك يجب أن يصبح الأمر سهلاً نسبيًا:يمكن أيضًا استخدام جميع الفئات التي يمكن تحميلها تلقائيًا عند تضمين هذا المكون في تطبيق آخر.لا يمكن استخدام أي شيء آخر ليس فئة بشكل مباشر.