问题标签 [psr-4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
374 浏览

php - 具有不同(较短)目录结构的 Composer 自动加载

我希望 Composer 加载我的 PHP 类。根据命名空间,当我遵循目录结构时它可以工作。

例如,我的类\MyCompany\MyProject\Class1在位于src/MyCompany/MyProject/Class1.php. 我使用这个作曲家设置:

但是,我不想将所有文件都放到 MyCompany 目录中,因为它是 src 中唯一的一个。我知道 Java 会这样做,但仍然如此。有什么方法可以设置 Composer,以便当我的类直接在 src 中时它会加载它们?例如从文件src/Class1.php.

编辑:PSR-4 直接解决了这个问题,尽管类映射仍然有效(建议用于生产设置)。

0 投票
2 回答
38995 浏览

composer-php - 非空 PSR-4 前缀必须以命名空间分隔符结尾

我正在尝试使用 Composer 设置 PSR-4,但我只是得到A non-empty PSR-4 prefix must end with a namespace separator.

autoloadcomposer.json样子是这样的:

app/models是空的。

我究竟做错了什么?我怎样才能解决这个问题?

0 投票
1 回答
8413 浏览

php - Laravel,使用带有 PSR-4 的包会给出消息“未定义提示路径”

我使用 Laravel 4.1 并启动一个使用 PSR-4 标准的包(subby)。当我尝试使用以下方式渲染任何视图时:

我收到消息:

我有很多东西是红色的,但这些通常是错字问题

0 投票
1 回答
723 浏览

php - psr-0 到 psr-4 更改后无法生成实体

我将一些捆绑包的 psr-0 自动加载更改为 psr-4。现在,当我尝试使用 app/console 命令生成实体时,它给了我

找不到“MbDbFooBundle”的基本路径(路径:“/home/roland/projects/rolandtest/mbmbisbundle/Symfony/vendor/mb/mb-db-foo-bundle”,目的地:“/home/roland/projects/ rolandtest/mbmbisbundle/Symfony/vendor/mb/mb-db-foo-bundle”)。

起初我认为生成的自动加载器会出现问题。但是当我对我的项目进行新的克隆,然后运行 ​​composer update 以完成供应商时,它仍然给我这个错误。

0 投票
1 回答
472 浏览

php - PHP 的 use 语句在加载类时会导致额外的工作吗?

代码示例 1

代码示例 2

问题:

如果我使用示例 1 中的代码,PHP 是否会使硬件工作更加困难(查找更多文件或进行更多处理)?我确信有些事情已经完成了,即使它是在一些代码的级别use上来确定哪一行与哪个类匹配。我想确切地知道发生了什么。

简而言之:

  • PHP在解决使用之间的联系时会做什么use在确定语句的使用与它应该用于的类
  • 当涉及到这两个代码示例时,PSR-0/PSR-4 自动加载器的工作方式是否受到影响?
0 投票
1 回答
359 浏览

php - psr-4 自动加载 - 无法重新声明类

我第一次尝试在 Laravel 中使用 psr-4 自动加载。在我用模型完成之后,我有以下雄辩的模型:

它工作正常,但如果我添加这样的集合:

然后我收到此错误:

Cannot redeclare class Models\Series\Player

我也尝试用 替换Player::paginate(15)self::paginate(15)但无济于事。

0 投票
6 回答
25787 浏览

php - 如果 classmap 实际上更快,为什么要在 composer 中使用 PSR-0 或 PSR-4 自动加载?

我知道您可以使用 PSR 标准来定位文件,或者告诉作曲家一个目录来扫描类。文档建议使用PSR-4标准。composer 还有一个选项可以创建一个优化的自动加载器,它基本上会生成一个完整的 classmap。那么,如果最好的加载方式是使用类映射,为什么还要使用 PSR-4?

保持目录结构对我来说是有意义的,因为无论如何这是组织的好方法。但是,似乎合乎逻辑的选择是在开发机器上使用 PSR-4 加载,然后在生产环境中使用类映射。这样,您不必每次创建新类时都重新构建类映射,但生产环境会创建一个完整的类映射作为部署过程的一部分,而无需额外调用

0 投票
1 回答
26257 浏览

php - 具有 PSR-4 自动加载功能的 Composer:未加载命名空间中的类

我有以下项目结构:

composer.json已经有一个 PSR-4 条目:

/Vendor/test.php

Vendor/myusername/src/MyNamespace/File.php

但我总是遇到致命错误Fatal error: Class 'MyNamespace\File' not found in [...]

作曲家设置或文件结构是否正确?我可以做什么?

编辑1:

我可以很好地加载外部供应商

0 投票
1 回答
1640 浏览

php - 在 Laravel 中无法自动加载 psr-4

好的,所以我的 Laravel 应用程序中有一个项目文件夹。命名为 TLGD(如果我的站点的名称)。在里面我创建了一个表单验证助手,用于从控制器中删除不必要的代码。

这是文件夹结构:

在这里我有我的表单助手类

现在在控制器中只是为了测试它,我通过 php 中的 use methd 调用类,如下所示:

login 是登录验证的类

现在效果很好,所以我尝试自动加载 TGLD 文件夹,所以我不需要在每个控制器中添加使用行。这是我的 composer.json 文件

但是当我自动加载它时,它给了我我的登录类不存在的错误,这意味着自动加载器不工作。有语法错误还是我遗漏了什么?我跑了

好吧,任何建议都有帮助,提前谢谢你

0 投票
1 回答
3524 浏览

php - Composer - 自动加载和 PSR-0 与 PSR-4

我开始学习 Composer 并正在开发一个系统,我将文件核心应用程序文件分开,如下所示:

那么,要在 composer.json 文件中设置此设置并获得对/App much /Core的所有类的访问权限会是这样吗?

还是有更正确的方法?

我还阅读了有关PSR-0 与 PSR-4 的信息,但我仍然有点怀疑该使用哪一个。在我的情况下,我应该实施什么PSR-0 或 PSR-4