自动加载:未删除需要语句时找不到类

时间:2017-02-12 17:38:39

标签: php autoload

问题:我想从我的代码中删除require语句,而是使用自动加载。但是当我这样做时,我发现了一个没有找到错误的类:

结构:

composer.json
index.php
users/user-model.php
users/users-route.php

Composer Json(我运行composer dump-autoload):

....  
"autoload": {
    "psr-4": {
      "User\\": "users/"
    }

的index.php:

require_once __DIR__ . '/vendor/autoload.php';

//require ('users/user-model.php'); HERE: Doesn't work when I comment this

$klein = new \Klein\Klein();

require ('users/users-routes.php');

$klein->dispatch();

用户-route.php:

use User\UserModel as user;

$klein->respond( 'GET', '/', function( $request, $response, $service, $app ) {
    $tt = new user();
    echo $tt::name();
} );

用户model.php:

namespace User;

class UserModel
{

    public static function name()
    {
        return 'bob';
    }
}

我应该改变什么,所以我不需要:require(' users / user-model.php'); ?

1 个答案:

答案 0 :(得分:1)

如果您想使用自动加载,请按照声明的方式in accordance with psr-4进行操作。

  

文件名必须与终止类名称的大小写匹配。

将文件重命名为UserModel.php