Autoloader in CodeIgniter

Publicat în categoriePHP
  • Stefanescu Mihai acum 10 luni

    De curand am avut "placerea" de a avea de facut niste modificari intr-un proiect pe CodeIgniter, un framework cu care nu am mai lucrat de cativa ani buni...

    anyway, CodeIgniter nu are autoloading pentru a mentine compatibilitatea cu versiunile mai vechi de PHP.

    Asa ca am decis eu sa imi fac un mic autoloader, asa ca in application/config/config.php am pus:

    spl_autoload_extensions('.php'); // Only Autoload PHP Files
    
    spl_autoload_register(function($classname){
    
        if( strpos($classname,'\\') !== false ){
            // Namespaced Classes
            $classfile = strtolower(str_replace('\\','/',$classname));
    
            if($classname[0] !== '/'){
                $classfile = APPPATH.'models/'.$classfile.'.php';
            }               
            require($classfile);
        } else if( strpos($classname,'interface') !== false ){
            // Interfaces
            strtolower($classname);
            require('application/interfaces/'.$classname.'.php');
        }
    
    });
  • Stefanescu Mihai acum 10 luni

    De asemenea puteti face acelasi lucru si cu composer, in config/config.php setati 

    $config['composer_autoload'] = FCPATH.'vendor/autoload.php';

    In radacina proiectului rulati composer install care va genera un fisier composer.json in care trebuie sa adaugati 

        "autoload": {
            "psr-4": {
                "App\\": "application/"
            }
        },  

    In cazul asta Namespace-ul folderului application va fi App.

     

Te rog autentifică-te sau înregistrează-te pentru a lăsa un răspuns.