【问题标题】:How autoloader works in zend framework 2自动加载器在 zend 框架 2 中的工作原理
【发布时间】:2015-04-23 16:13:52
【问题描述】:

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

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

'modules' => array(
    ...
    'Zf2auth'
),

但在这里它不起作用。如果我保持领先一步,即。 vendor/zf2auth 它再次工作。

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

【问题讨论】:

  • 查看@guessimtoolate 帖子以获得有效的解决方案。更新你的包并运行 composer update 以使其工作

标签: php zend-framework2 package composer-php autoloader


【解决方案1】:

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

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

看看它应该是的目录结构:

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

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

【讨论】:

  • 嗨,guessimtoolate,感谢 oyu 提供您的解决方案,生成 autoload_classpam 文件并更新软件包,它正在工作。但是请您帮我理解一下,为什么要在 Zf2auth 中添加“\\”?
  • 不完全确定它是否有必要,但这是强调命名空间的基本目录这一事实的好方法(因此在末尾有 \)。由于它是 JSON,并且反斜杠用于转义其中的字符,因此反斜杠也需要转义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 2015-01-23
相关资源
最近更新 更多