【发布时间】:2020-08-07 06:10:01
【问题描述】:
我正在 Composer 中创建一个项目使用 Eclipse PDT,但是每次我将文件添加到 composer 自动加载基目录下的目录时,phpunit 测试运行程序都无法再找到我的文件。
至少 2 次我做了一些修补并让它再次工作,但似乎每次我更改文件系统时它都会中断。我希望 Composer 自动加载器能够在不考虑 fs 更改的情况下找到我的文件。
这是我最新的自动加载器配置:
{
"name": "someone/webapp",
"description": "",
"require-dev": {
"phpunit/phpunit":"~9.0",
"squizlabs/php_codesniffer": "~3.0"
},
"require": {
"doctrine/orm": "~2.7"
},
"autoload" : {
"psr-4": {
"WebApp\\": "src/"
}
},
"autoload-dev" : {
"psr-4": {
"WebApp\\Tests\\" : "tests/"
}
}
}
我之前尝试过使用符合 PSR-0 标准的自动加载器:
{
"name": "srmes/shopping-app-test",
"description": "Developer test. Basic OO-orientated PHP webapp",
"require-dev": {
"phpunit/phpunit":"~9.0",
"squizlabs/php_codesniffer": "~3.0"
},
"require": {
"doctrine/orm": "~2.7"
},
"autoload" : {
"classmap": ["src/", "src/Models/"],
"psr-0": {
"WebApp\\": "src/",
"WebApp\\Models\\": "src/Models/"
}
},
"autoload-dev" : {
"classmap": ["tests/", "tests/Models/"],
"psr-0": {
"WebApp\\Tests\\" : "tests/"
}
}
}
我的问题是指将文件添加到自动加载目录。我的目录结构如下:
someone/webapp
|-vendor
| |-MISC_PACKAGES
|- src --autoloader base dir
| |-Models
| | |-Product.php
| | |-Furniture.php
| |- IComparable.php -- THIS WAS ADDED, BREAKING AUTOLOADER
|- tests -- autoloader base dir
| |- Models
| | |- FurnitureTest.php
| | |- IProductTest.php
| |-bootstrap.php
编辑:
正如我在下面的评论中所示,我发现这个问题与 Eclipse PDT 自动完成有关,只有在使用随后的新作曲家 require 语句等提交到 git 后才有效,这不太理想对我来说,因为我想在提交之前尝试使用 packagegist 包
【问题讨论】:
-
您不应该自己更改文件,而是让 composer 来完成工作。 AFAIK,可以插入测试路径。如果有,请尝试在最新 2020.1 版本中支持该功能的 PhpStorm IDE。
-
我不明白你所说的“插入”是什么意思,我应该通过 composer 命令在我的自动加载器目录中创建文件吗?
-
要求包和引导 phpunit 不是我想问的这个问题,但也许不清楚我是否添加了更新:)
-
将 IComparable.php 放入建议“接口”的目录中。这不能在“根”路径上,因为自动加载器找不到它。
标签: php filesystems require autoload