gpt4 book ai didi

php - PSR-4 自动加载在自定义库的 Composer 中如何工作?

转载 作者:可可西里 更新时间:2023-11-01 12:35:30 26 4
gpt4 key购买 nike

根据我对 PHP 中命名空间工作原理的理解,我使用了以下目录结构:

project_root
app/
| lib/
| | MyCompany/
| | | Utility/
| | | | Logger.php
| | | Core/
| | | | User.php
vendor/
composer/
symfony/
guzzle/
bootstrap.php
composer.json

根据 PSR-4 规范,完全限定的类名具有以下形式:

\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>

问题 1:

从我上面的目录结构来看,下面的假设是否正确?

  • 命名空间名称 = 我的公司
  • SubNamespaceNames = 实用程序 |核心
  • 类名 = 记录器 |用户

问题 2:

如果我的 bootstrap.php 文件包含以下内容:

<?php
require 'vendor/autoload.php';

我怎么会configure the 'autoload' composer.json 部分自动加载 MyCompany 目录中的类?这样我就可以在 bootstrap.php 中创建一个 Logger 实例

最佳答案

取自您链接的文档:

{
"autoload": {
"psr-4": {
"MyCompany\\": "app/lib/MyCompany/",
}
}
}

这是不言自明的,它只是告诉自动加载器 app/lib/MyCompanyMyCompany\ 命名空间的根。

然后您就可以将该类用作 \MyCompany\Utility\Logger

请注意,在 PSR-4 中,与 PSR-0 不同,您通常会从目录结构中省略 MyCompany,而只使用 app/lib/

关于php - PSR-4 自动加载在自定义库的 Composer 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27802179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com