سؤال

لدي مشروع الملحن، يطلق عليه 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 قسم التحميل التلقائي)، لا ينبغي تحميل الأخير تلقائيًا.

وبعد ذلك يجب أن يصبح الأمر سهلاً نسبيًا:يمكن أيضًا استخدام جميع الفئات التي يمكن تحميلها تلقائيًا عند تضمين هذا المكون في تطبيق آخر.لا يمكن استخدام أي شيء آخر ليس فئة بشكل مباشر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top