自动加载器如何在 zend 框架 2 中工作

How autoloader works in zend framework 2

我只是想为 packagist 创建一个包,一个 zend 框架 2 用户身份验证模块,https://packagist.org/packages/tahmina8765/zf2auth

当我将这个 zf2auth 文件夹保存在我的模块文件夹中时,它可以工作。但是当我用 composer 下载它时,它在 vendor/tahmina8765/zf2auth 中下载。 在此文件夹中,它不起作用。我的意思是,我在 application.config.php -

中添加了这个模块
'modules' => array(
    ...
    'Zf2auth'
),

但是这里不行。如果我保持领先,即。 vendor/zf2auth 又能用了。

如何让它在 vendor/tahmina8765/zf2auth 文件夹中可用?

我认为您模块中的 composer.json 文件有问题。它说:

"autoload": {
    "psr-0": {
        "Zf2auth": "./"
    }
}

查看目录结构应该是:

"autoload": {
    "psr-0": {
        "Zf2auth\": "src"
    }
}

它在你的 ./modules/ 目录中工作,因为你的模块 class 中有 getAutoloaderConfig -- 这是由 ZF2 完成的。但是,当您通过作曲家下载模块时,自动加载(可能)由作曲家完成,并且使用作曲家清单中的自动加载(无效)定义。您可能还想 运行 composers dump 命令后记,以刷新自动加载 classes.