问题标签 [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.
php - 具有不同(较短)目录结构的 Composer 自动加载
我希望 Composer 加载我的 PHP 类。根据命名空间,当我遵循目录结构时它可以工作。
例如,我的类\MyCompany\MyProject\Class1
在位于src/MyCompany/MyProject/Class1.php
. 我使用这个作曲家设置:
但是,我不想将所有文件都放到 MyCompany 目录中,因为它是 src 中唯一的一个。我知道 Java 会这样做,但仍然如此。有什么方法可以设置 Composer,以便当我的类直接在 src 中时它会加载它们?例如从文件src/Class1.php
.
编辑:PSR-4 直接解决了这个问题,尽管类映射仍然有效(建议用于生产设置)。
composer-php - 非空 PSR-4 前缀必须以命名空间分隔符结尾
我正在尝试使用 Composer 设置 PSR-4,但我只是得到A non-empty PSR-4 prefix must end with a namespace separator.
我autoload
的composer.json
样子是这样的:
app/models
是空的。
我究竟做错了什么?我怎样才能解决这个问题?
php - Laravel,使用带有 PSR-4 的包会给出消息“未定义提示路径”
我使用 Laravel 4.1 并启动一个使用 PSR-4 标准的包(subby)。当我尝试使用以下方式渲染任何视图时:
我收到消息:
我有很多东西是红色的,但这些通常是错字问题
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 以完成供应商时,它仍然给我这个错误。
php - PHP 的 use 语句在加载类时会导致额外的工作吗?
代码示例 1
代码示例 2
问题:
如果我使用示例 1 中的代码,PHP 是否会使硬件工作更加困难(查找更多文件或进行更多处理)?我确信有些事情已经完成了,即使它是在一些代码的级别use
上来确定哪一行与哪个类匹配。我想确切地知道发生了什么。
简而言之:
- PHP在解决使用之间的联系时会做什么
use
在确定语句的使用与它应该用于的类 - 当涉及到这两个代码示例时,PSR-0/PSR-4 自动加载器的工作方式是否受到影响?
php - psr-4 自动加载 - 无法重新声明类
我第一次尝试在 Laravel 中使用 psr-4 自动加载。在我用模型完成之后,我有以下雄辩的模型:
它工作正常,但如果我添加这样的集合:
然后我收到此错误:
Cannot redeclare class Models\Series\Player
我也尝试用 替换Player::paginate(15)
,self::paginate(15)
但无济于事。
php - 如果 classmap 实际上更快,为什么要在 composer 中使用 PSR-0 或 PSR-4 自动加载?
我知道您可以使用 PSR 标准来定位文件,或者告诉作曲家一个目录来扫描类。文档建议使用PSR-4标准。composer 还有一个选项可以创建一个优化的自动加载器,它基本上会生成一个完整的 classmap。那么,如果最好的加载方式是使用类映射,为什么还要使用 PSR-4?
保持目录结构对我来说是有意义的,因为无论如何这是组织的好方法。但是,似乎合乎逻辑的选择是在开发机器上使用 PSR-4 加载,然后在生产环境中使用类映射。这样,您不必每次创建新类时都重新构建类映射,但生产环境会创建一个完整的类映射作为部署过程的一部分,而无需额外调用
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:
我可以很好地加载外部供应商
php - 在 Laravel 中无法自动加载 psr-4
好的,所以我的 Laravel 应用程序中有一个项目文件夹。命名为 TLGD(如果我的站点的名称)。在里面我创建了一个表单验证助手,用于从控制器中删除不必要的代码。
这是文件夹结构:
在这里我有我的表单助手类
现在在控制器中只是为了测试它,我通过 php 中的 use methd 调用类,如下所示:
login 是登录验证的类
现在效果很好,所以我尝试自动加载 TGLD 文件夹,所以我不需要在每个控制器中添加使用行。这是我的 composer.json 文件
但是当我自动加载它时,它给了我我的登录类不存在的错误,这意味着自动加载器不工作。有语法错误还是我遗漏了什么?我跑了
好吧,任何建议都有帮助,提前谢谢你
php - Composer - 自动加载和 PSR-0 与 PSR-4
我开始学习 Composer 并正在开发一个系统,我将文件核心应用程序文件分开,如下所示:
那么,要在 composer.json 文件中设置此设置并获得对/App much /Core的所有类的访问权限会是这样吗?
还是有更正确的方法?
我还阅读了有关PSR-0 与 PSR-4 的信息,但我仍然有点怀疑该使用哪一个。在我的情况下,我应该实施什么PSR-0 或 PSR-4?