【问题标题】:Class not found - PSR-4 namespaced autoloading找不到类 - PSR-4 命名空间自动加载
【发布时间】:2016-05-18 19:49:36
【问题描述】:

我想为我编写的一个类设置 PSR-4 自动加载。但是我不断收到错误Fatal error: Class 'Glowdemon1\Translxtor\LangParserXML' not found in C:\xampp\htdocs\translator\index.php on line 5

文件夹结构(还不能发布img):

LangParserXML.class.php

namespace Glowdemon1\Translxtor;
class LangParserXML extends ErrorHandler implements ParserInterface{
...

index.php

require_once('vendor/autoload.php');
$translator = new Glowdemon1\Translxtor\LangParserXML('nl.xml');

composer.json

    "autoload": {
        "psr-4": {
            "Glowdemon1\\": "src/"
        }
    }

autoload_psr4.php

return array(
    'Glowdemon1\\' => array($baseDir . '/src'),
);

我看了无数个帖子,但没有解决方案。如果您想要更深入地了解,这也发布在https://github.com/glowdemon1/translxtor 上。谢谢。

【问题讨论】:

  • 作曲家ps-4应该是Glowdemon1\\Translxtor\\

标签: php composer-php autoloader psr-4


【解决方案1】:

将您的 composer.json 更新为:

"autoload": {
    "psr-4": {
        "Glowdemon1\\Translxtor\\": "src/"
    }
}

或者在您的LangParserXMl 之前添加一个src/Transxtor/ 目录

另外,您的文件名不能包含“.class”。它应该被称为LangParserXML.php

【讨论】:

  • 感谢@Evert 的改进
【解决方案2】:

我认为您应该在 src 内有一个 Translxtor 文件夹,其中包含 LangParserXML.class.phpTranslator.class.php

“命名空间前缀”之后的连续子命名空间名称对应于“基本目录”中的一个子目录,其中命名空间分隔符代表目录分隔符。子目录名称必须与子命名空间名称的大小写匹配。

来源:http://www.php-fig.org/psr/psr-4/ `

【讨论】:

    猜你喜欢
    • 2016-01-22
    • 2015-12-03
    • 1970-01-01
    • 2015-08-23
    • 2015-07-31
    • 2015-07-20
    • 2014-09-24
    • 2019-03-09
    • 2018-06-01
    相关资源
    最近更新 更多