【问题标题】:PSR4 Composer Autoloading namespacesPSR4 Composer 自动加载命名空间
【发布时间】:2016-12-08 09:13:58
【问题描述】:

我一直在玩一些 Composer 自动加载,我遇到了一些问题,所以目录结构是

index.php
app/
   helpers/
          router.php
vendor/
   composer/
          /*usual files*/
   autoload.php

在我的composer.json 中,我有以下内容

"autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }

在我的index.php里面我有

<?php
// Autoload our namespaces
require __DIR__.'/vendor/autoload.php';

use App\Helpers\Router;
$route = new Router;

得到以下错误

Fatal error: Class 'App\Helpers\Router' not found in /var/www/public/index.php on line 6

我尝试了一些不同的方法来尝试让它工作,但我不确定我哪里出错了。这是我第一次研究在框架之外使用 Composer 进行自动加载,因此不胜感激。

【问题讨论】:

    标签: php composer-php psr-4


    【解决方案1】:

    PSR-4 区分大小写。结构必须是app/Helpers/Router.php 或更好的App,大写A。

    必须以区分大小写的方式引用所有类名。

    子目录名称必须与子命名空间名称的大小写匹配。

    终止类名对应于以 .php 结尾的文件名。文件名必须与终止类名的大小写匹配。

    http://www.php-fig.org/psr/psr-4/

    【讨论】:

    • 附加提示:如果您刚刚更新了 composer.json 中的自动加载配置,您可以让 composer 仅使用 composer dumpautoload 重新生成自动加载配置,而不是等待 composer update 更新其包列表没有葡萄干。
    • 感谢它是区分大小写和文件名空间有点松散的混合体。感谢您真正提供的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2017-12-26
    • 2014-03-17
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多