1
因爲我是新手,所以我試圖將自己的頭圍繞在composer/psr-4自動加載上。無法加載與PSR-4位於同一文件夾中的類
我的項目具有以下結構:
| ProjectName
|- src
| |- MainComponent
| |- MainClass.php
| |- Component1
| |- Foo.php
| |- Bar.php
| |- Component2
| |- Baz.php
|- tests
| |- FooTest.php
| |- ...
|- vendor
| |- [...]
| |- ...
|- composer.json
|- phpunit.xml.dist
在我composer.json,我有以下PSR-4項:
"autoload": {
"psr-4": {
"MyName\\ProjectName\\": "src/"
}
}
我已經完成了我的第一個組成部分,並已命名空間的類Foo.php是這樣的:
namespace MyName\ProjectName\Component1;
class FooClass
{
...
}
現在我想在Bar.php中使用FooClass駐留在同一文件夾):
namespace MyName\ProjectName\Component1;
$foo = new FooClass();
而且我得到以下錯誤:
Fatal error: Class 'MyName\ProjectName\Component1\FooClass' not found in
/path/to/Bar.php
與全名試圖在同樣的錯誤被拋出:
use MyName\ProjectName\Component1\FooClass;
$foo = new FooClass();
怪異事情是PHPUnit可以正確解析名稱空間,因爲我的測試使用與上面相同的準確語句加載並正確執行。
這是我的測試/ FooTest.php:
use MyName\ProjectName\Component1\FooClass;
class FooTest extends PHPUnit_Framework_TestCase
...
$ phpunit
OK (15 tests, 383 assertions)
我在做什麼錯?