it-swarm.asia

كيف يتعامل Drupal مع التحميل التلقائي للفئات؟

كيف يتعامل Drupal بالتعامل مع التحميل التلقائي للفصول من خلال الوحدات؟ على سبيل المثال ، إذا كان لدي وحدة أحداث ، وأعلن فئة تسمى حدث ، ثم في ملف .info أقوم بتضمين ملف الفصل ، كيف يتم تسجيل هذا؟

تكمن المشكلة في أنني أحاول بشكل ديناميكي الحصول على مصفوفة تحتوي على جميع أسماء الفئات المحملة. get_declared_classes () لا يُرجع أسماء جميع فصولي المعلنة بهذه الطريقة ، لذلك أفترض أنهم تم تحميلهم تلقائيًا بطريقة أو بأخرى. بعد الاقتراحات من سؤال آخر تجاوز سعة المكدس ، حاولت الحصول عليها جميعًا spl_autoload_functions () ، ولكن ذلك لم ينجح أيضًا.

أيه أفكار؟

10
rybosome

يتم تحليل جميع الملفات المدرجة في ملفات .info عند إعادة بناء الوحدات النمطية (يتم تغيير الملفات الجديدة/الجديدة فقط في تلك القائمة ، لأسباب تتعلق بالأداء).

ثم يتم تخزين هذه المعلومات في {registry} و {registry_files} الجداول. لذلك إذا كنت ترغب في الحصول على جميع الفئات أو تلك وفقًا لنمط تسمية معين ، فيمكنك الاستعلام عن هذه الجداول.

13
Berdir

يحافظ Drupal على تسجيل الرمز ويستخدمه في برنامج التحميل التلقائي لفئاته. لملء هذا التسجيل بفئات الوحدة النمطية الخاصة بك ، يجب عليك إضافة ملفاتهم إلى إدخال الملفات [] في ملف .info الخاص به:

files[] = includes/Foo.inc
files[] = includes/Bar.inc

سيتأكد التحميل التلقائي لفئة PHP من تحميل ملف الفصل الأصل أيضًا.

الائتمان لرصيف المستخدم على شراء هذه الإجابة ، انظر الإجابة الأصلية هنا لنفس السؤال.

امل ان يساعد

7
stefgosselin

spl_autoload_functions() تُرجع قائمة وظائف التحميل التلقائي التي تم تسجيلها باستخدام spl_autoload_register(). Drupal يسجل وظيفتين للتحميل التلقائي: واحدة للفئات ( drupal_autoload_class () ) والأخرى للواجهات ( drupal_autoload_interface () ).

تستخدم كلتا الدالتين _ Registry_check_code () ؛ باستخدام الكود الخاص به ، يمكنك كتابة دالة تسرد جميع الفئات المنفذة من قبل Drupal 7 Modules.

5
kiamlaluno

إذا قمت بإضافة إدخال إلى صفيف الملفات [] لملف .info ، فسيتعين عليك الانتقال إلى قسم إدارة الوحدات النمطية الخاصة بك والنقر فوق "حفظ التكوين". سيحصل هذا على drupal لتحديث معلومات .info ، وسيتم تسجيل الإدخالات الجديدة.

3
Webdesigner007

لقد وجدت أن الإعلان عن ملفات التضمين الخاصة بي في ملف المعلومات لا يتعرف عليها عند بدء تشغيل الوحدة النمطية. إذا كان لدي حدث فئة في الملف event.inc. ولكن قفص شيء في الوحدة النمطية ، لم يتم التعرف عليه. أضفت السطر

include_once ('CMatArticleHandler.inc');

قبل المتغير $ = new event ()؛ خط. أنا جديد في هذا لذا قد يكون هناك المزيد لذلك ، لكنه نجح حتى الآن.

1
Ashlar