我有一个在本地运行良好的Laravel项目(Mavericks),但是psr-4下的类没有加载到我们的后台服务器(CentOS)上。每次尝试composer更新或运行artisan命令时,我都会收到一个反射“未找到类”错误。
我的所有特定于应用程序的类都html" target="_blank">存储在我的Laravel项目的app/heatherland下,例如:
app/heatherland/import/ImportJob.php (file contains HeatherLand\Import\ImportJob)
我的composer.json包含以下条目:
"autoload": {
"classmap": [
"app/commands",
...
"app/database/seeds",
],
"psr-4": {
"HeatherLand\\": "app/heatherland"
}
},
在本地,psr-4类被添加到vendor/composer/autoload_classmap中的数组中。php。它们未添加到后台服务器上的此文件中。如果我手动剪切并粘贴它们,artisan命令将正常工作,但下次运行composer命令时,自动加载文件将被覆盖。自动加载的psr4。本地和后台的php都有以下条目,我觉得很好:
'HeatherLand\\' => array($baseDir . '/app/heatherland'),
这是我尝试/检查过的东西的列表:
欢迎任何新的建议。在这一点上,如果我做了傻事,我会非常高兴。
名称空间、文件夹和文件名区分大小写。
如果你有“App\website”,你必须在php文件中调用它,“App\website”是正确的,但“App\website”是错误的
PSR-4确实对这件事非常敏感,比拉威尔本身更敏感。完整文件夹路径和名称必须与名称空间的大小写相同。案例不需要相同的唯一地方是composer的PSR-4部分中有参考的地方。json。
这只会成为特定于大小写的操作系统的问题。我的Mac没有问题,但是CentOS拒绝玩。
注意,这与Laravel特定框架在其文档中使用的做法不同,后者使用小写文件夹路径和CamelCase名称空间。这不会在任何操作系统上造成任何问题。2015年7月ETA:此信息适用于Laravel 4;看起来Laravel 5默认文件夹结构符合psr-4标准。
我最终得到了一个文件夹结构,如:
app/heatherland
Import
ImportJob.php
名称空间
HeatherLand\Import
还有一个作曲家。根据原始问题输入json:
"autoload": {
"classmap": [
"app/commands",
...
"app/database/seeds",
],
"psr-4": {
"HeatherLand\\": "app/heatherland"
}
},
自我提醒:记得运行作曲家转储-自动加载。倾倒早,倾倒常。
1. 概述 本 PSR 是关于由文件路径 自动载入 对应类的相关规范, 本规范是可互操作的,可以作为任一自动载入规范的补充,其中包括 PSR-0,此外, 本 PSR 还包括自动载入的类对应的文件存放路径规范。 关于「能愿动词」的使用 为了避免歧义,文档大量使用了「能愿动词」,对应的解释如下: 必须 (MUST):绝对,严格遵循,请照做,无条件遵守; 一定不可 (MUST NOT):禁令,严令禁止;
我正在使用一些phpunit测试类尝试composer autoload,但我似乎无法让它工作。当我从命令行运行phpunit时,我得到以下错误:“PHP致命错误:Class…notfound”。 我将提供所有的结构和文件信息。我可以,所以希望有人能发现我的错误。 结构(精简为相关文件): composer.json phpunit.xml 测试/功能/基本测试用例。php 测试/功能/主页测试。
我和许多其他人一样,似乎很难弄清楚何时以及如何使用自动加载。我想我理解作曲家和PSR-0/PSR-4的概念和这需要的目录结构。但是如果我用自己的MVC框架构建自己的项目 > 由于composer自带了自动加载器,它将加载我希望包含在项目中的所有依赖项,如果我不打算将我的网站变成分布式项目,我甚至需要自己的名称空间吗?为什么我不坚持使用include/requires? 最后,如果我采用名称空间,使
我刚刚开始使用composer进行依赖关系管理,我很难弄清楚我是如何不遵守psr-4进行自动加载的,所以我来这里寻求建议。我有一个生成随机值的类,它已经在packagist上了。项目结构如下(我已将composer.json文件标记为A和B): 项目总监 composer.jsonA composer.jsonB 最后是RlandValue.php文件,它声明了ejFrancis命名空间 当我运行
我不熟悉使用composer和psr-0。我尝试了一个使用composer和psr-0的小应用程序。我已经使用名称空间加载了一个特定的类。当我使用composer vendor/autoload调用一个类时,我得到了“未找到类”错误。 我的composer.json文件:/var/www/html/silexapp/composer.json 我的作曲家供应商自动加载文件:/var/www/htm
我开始学习Composer,并正在开发一个系统,在该系统中,我将文件与核心应用程序文件分开,如下所示: 所以,要在composer中设置此设置。json文件并访问所有类/App much/Core会这样吗? 还是有更正确的方法? 我也读过PSR-0和PSR-4的比较,我仍然有点怀疑应该使用哪一种。在我的情况下,我应该实现什么,PSR-0还是PSR-4?