根据psr-0规则编写的,回调类无法自动载入,怎么解决?

来源:3-3 获取分页数据

杨奉全

2015-09-17 07:35

代码如下:
index.php

<?php
use App\Route;
use App\Controller\HomeController;
define('BASEDIR', __DIR__);
include BASEDIR . '/App/Loader.php';
spl_autoload_register('\\App\\Loader::autoload');
HomeController::index();
call_user_func('HomeController::index');



App\Controller\HomeController.php

<?php
namespace App\Controller;
class HomeController{
    public static function index(){
        echo __METHOD__;
    }
}

App\loader.php

<?php
namespace App;
class Loader{
    public static function autoload($class){
        $class = str_replace('\\', '/', $class);
        require BASEDIR . '/' .$class . '.php';
    }
}

运行结果:
App\Controller\HomeController::index
Warning:  require(D:\wwwroot\htdocs\dd/HomeController.php): failed to open stream: No such file or directory in D:\wwwroot\htdocs\dd\App\Loader.php on line 10

Fatal error:  require(): Failed opening required 'D:\wwwroot\htdocs\dd/HomeController.php' (include_path='.;C:\php\pear') in D:\wwwroot\htdocs\dd\App\Loader.php on line 10我知道写成call_user_func('App\Controller\HomeController::index');是可以解决问题的。
但是采用简单的call_user_func('HomeController::index');写法,应该怎么解决

写回答 关注

2回答

  • 未来的那个夏天
    2016-01-26 17:02:35

    index.php没定义BASEDIR

  • 未来的那个夏天
    2016-01-26 17:02:30

    index.php没定义BASEDIR

PHP+MySQL分页原理实现

引导大家完成一个PHP+MySQL分页功能,由简入繁的剖析原理

41180 学习 · 175 问题

查看课程

相似问题