سلوك spl_autoload_register المختلف b/n عبر الإنترنت والمضيف المحلي
-
21-12-2019 - |
سؤال
لدي بنية الدليل التالية، وأضع كل فئاتي بداخلها classes/
كما هو موضح أدناه، ولدي header.php
الذي يستدعي جميع الملفات، ويحتوي على إعدادات مهمة أخرى تشترك فيها جميع الملفات.
الآن، إذا كنت تستخدم spl_autoload_register()
من هنا:
spl_autoload_register(function($class){
include 'classes/'. $class .'.class.php';
});
داخل inc/header.php
ملف واستدعاء هذا header.php
من وجهة نظري index
الملف، فهو يعمل بشكل جيد على المضيف المحلي الخاص بي، ولكن عندما أقوم بتحميل البرنامج النصي بالكامل كما هو إلى مضيف مباشر، تظهر لي أخطاء مثل.
Warning: include(classes/filehandler.class.php) [function.include]: failed to open stream: No such file or directory in /home/.../public_html/....com/inc/header.php on line 9
Line 9
هل spl_autoload_register()
لا أفهم كيف يمكن أن يحدث هذا، وآمل أن يكون لدى أي شخص أي فكرة على الإطلاق.
شكرًا
المحلول
لإظهار ما أعنيه بتعليقاتي، أضف هذا الكود في ملف Index.php الخاص بك وقم بإزالة أداة التحميل التلقائي من ملفاتك الأخرى:
spl_autoload_register(function($class){
$classesPath = dirname(__FILE__) . '/classes/';
if (is_file($classFile = $classesPath . $class.'.class.php')) {
include $classFile;
}
});
بالنسبة إلى inc/header.php:
spl_autoload_register(function($class){
$classesPath = dirname(__FILE__) . '/../classes/';
if (is_file($classFile = $classesPath . $class.'.class.php')) {
include $classFile;
}
});
لا تنتمي إلى StackOverflow