使用spl_autoload_register自动加载问题


Autoloading problems using spl_autoload_register

首先,我想告诉你我的目录结构

- /var/www
   |- /social_network/
      |- index.php
      |- /application/
         |-/controllers/  
                 |-user.php
         |- /models/
         |- framework.php
    |-/tmp/

在我的索引中.php我包括应用程序/框架.php这是我的框架.php代码

    <?php
spl_autoload_register();
class Framework{
        public function load($page, $data){
                if(is_array($data)){
                        extract($data);
                }
                include "views/".$page;
        }
}
$object = "controller''$controller";
$object = new $object;
if(method_exists($object,"$method")){
$object->$method();
} else {
        show_404();
}
?>

现在使用上面的代码,自动加载我的类工作正常。如果您想知道$method并且$controller来自索引.php具体取决于 URI。

现在我的一个朋友告诉我这是错误的方法,所以我将我的代码更改为

    <?php
function autoload_controller($controller){
    include "$controller.php";
}
spl_autoload_register('autoload_controller');
class Framework{
        public function load($page, $data){
                if(is_array($data)){
                        extract($data);
                }
                include "views/".$page;
        }
}
$object = "controller''$controller";
$object = new $object;
if(method_exists($object,"$method")){
$object->$method();
} else {
        show_404();
}
?>

现在我在下面收到此错误

Warning: include(controller'User.php): failed to open stream: No such file or directory in /var/www/social_network/application/framework.php on line 3 Warning: include(): Failed opening 'controller'User.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/social_network/application/framework.php on line 3 Fatal error: Class 'controller'User' not found in /var/www/social_network/application/framework.php on line 16 

我该如何解决这个问题,我已经在这里呆了几个小时,如果可能的话,请告诉我如何使用自动加载从控制器类内部的模型目录中调用模型谢谢

set_include_path(get_include_path().PATH_SEPARATOR.'/var/www/social_network/application/');

或一些常量而不是硬编码字符串