Autoload classes from different folders

前端 未结 12 992
不知归路
不知归路 2020-11-28 19:35

This is how I autoload all the classes in my controllers folder,

# auto load controller classes
    function __autoload($class_name) 
    {
             


        
12条回答
  •  心在旅途
    2020-11-28 19:58

    Here is my solution,

    /**
         * autoload classes 
         *
         *@var $directory_name
         *
         *@param string $directory_name
         *
         *@func __construct
         *@func autoload
         *
         *@return string
        */
        class autoloader
        {
            private $directory_name;
    
            public function __construct($directory_name)
            {
                $this->directory_name = $directory_name;
            }
    
            public function autoload($class_name) 
            { 
                $file_name = 'class_'.strtolower($class_name).'.php';
    
                $file = AP_SITE.$this->directory_name.'/'.$file_name;
    
                if (file_exists($file) == false)
                {
                    return false;
                }
                include ($file);
            }
        }
    
        # nullify any existing autoloads
        spl_autoload_register(null, false);
    
        # instantiate the autoloader object
        $classes_1 = new autoloader('controllers');
        $classes_2 = new autoloader('models');
    
        # register the loader functions
        spl_autoload_register(array($classes_1, 'autoload'));
        spl_autoload_register(array($classes_2, 'autoload'));
    

    I'm not sure whether it is the best solution or not but it seems to work perfectly...

    What do you think??

提交回复
热议问题