我认为这不是一个大问题。可能我需要对代码进行一些小改动。在我的项目中,我的src/
目录包含File.php
和NoFileException.php
个文件。
src/File.php
:
<?php
namespace myns;
use myns\NoFileException;
class File
{
...
}
src/NoFileException.php
:
<?php
namespace myns;
class NoFileException extends \Exception
{
...
}
composer.json
:
"autoload": {
"psr-4": {
"myns\\": "src/"
}
}
一切正常。现在我想将NoFileException.php
移到src/Exception/
目录。因此我更改了src/File.php
:
<?php
namespace myns;
use myns\Exception\NoFileException;
class File
{
...
}
和src/Exception/NoFileException.php
:
<?php
namespace myns\Exception; // doesn't work
//namespace myns; // also does't work
class NoFileException extends \Exception
{
...
}
我收到一条声明 class NoFileException not found 。我还在composer.json
添加了一个新的映射,并尝试了不同的命名空间组合(我做了dump-autoload
)。没有理由提出我的所有尝试。如何解决这个问题?
修改
当src/Exception/NoFileException.php
中的命名空间为myns
时,完整邮件错误如下所示:
Fatal error: Uncaught Error: Class 'myns\Exception\NoFileException' not found in /home/project/src/File.php:21
Stack trace: #0 /home/project/src/File.php(15):
myns\File->readable('r') #1 /home/project/index.php(20):
myns\File->__construct('files/filename...') #2 {main} thrown in /home/project/src/File.php on line 21
当命名空间为myns\Exception
时,错误消息相同,但开头没有Class
字。