سؤال

من فضلك كيف يمكنني استخدام spl_autoload_register () مع codeigniter؟ أحتاج إلى القيام بذلك لأن im باستخدام codeigniter مع إطار عمل آخر يستخدم أيضًا التحميل التلقائي.

رأيت شيئا هنا

PHP SPL_AUTOLOAD_REGISTER

لكن لا أعرف كيفية استهداف codeigniter autoload. أنا جديد على OOP و CODEIGNITER. شكرًا جزيلاً!

الرابط أعلاه لديه هذا:

function autoload_services($class_name){
    $file = 'services/' . $class_name. '.php';
    if (file_exists($file)){
        require_once($file);
    }
}

function autoload_vos($class_name){
    $file = 'vos/' . $class_name. '.php';
    if (file_exists($file)){
        require_once($file);
    }
}

function autoload_printers($class_name){
    $file = 'printers' . $class_name. '.php';
    if (file_exists($file)){
        require_once($file);
    }
}

spl_autoload_register('autoload_services');
spl_autoload_register('autoload_vos');
spl_autoload_register('autoload_printers');
هل كانت مفيدة؟

المحلول

شكرا ل http://codeigniter.com/forums/viewthread/73804/#366081 وبعض أجزاء المعلومات من بعض قوم CI الذي أتابعه على Twitter (سألت EM): إريك بارنز, دان هيرجان, فيل ستورجيون و Zack Kitzmiller, ، لقد وجدت حلاً. إذا كنت عبارة عن codeigniter n00b مثلي ، فقد ترغب في متابعة هؤلاء الرجال.

لقد قمت بحذف init.php و config.php ، ثم قمت بتشويش ما يلي في الجزء السفلي من CI's config.php (أنا أيضًا أتم عملية التحميل التلقائي من مكتبة مخصصة تسمى MyLibrary).

function multi_auto_require($class) {
if(stripos($class, 'CI') === FALSE && stripos($class, 'PEAR') === FALSE) {
    foreach (array('flourish', 'mylibrary') as $folder){
        if (is_file(APPPATH."../auxengines/{$folder}/{$class}.php")){
            include_once APPPATH."../auxengines/{$folder}/{$class}.php";
        }
    }
}
}

spl_autoload_register ('multi_auto_require') ؛

يعمل ببراعة. شكرا ، الناس!

نصائح أخرى

آه ، أرى الآن (بعد النظر إليه سؤال سابق سألت) ... أنت تواجه مشكلة لأن هناك 2 محددة __autoload وظائف (وبالتالي تؤدي إلى خطأ في التحليل) ...

لإصلاحه ، ما عليك سوى إعادة تسمية أحدهم إلى شيء آخر ، ثم مباشرة بعد الاتصال بالتعريف spl_autoload_register('yournewfunctionname');...

يجب أن يكون هذا كل ما في الأمر ، طالما أنني أفهم مشكلتك ...

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