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


How autoloader works in zend framework 2

我只是想为packagist创建一个包,一个zend framework 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/目录中工作,因为您的模块类中有getAutoloaderConfig——这是由ZF2完成的。然而,当您通过composer下载模块时,自动加载(可能)由composer完成,并使用composer清单中的自动加载(无效)定义。您可能还想运行composers dump命令afterwords,以刷新自动加载类。