我一直在苦苦挣扎;我终于解决了我的问题,但我无法理解:“为什么”。我有这个文件夹结构:
/app
/many folders...
/tests
/tests/functional/ (which contains some tests)
/tests/BaseClassA.php
/tests/BaseClassB.php
一切正常,一些功能测试继承BaseClassA
。 (我知道这不是自动加载问题)。然后我决定创建BaseClassB.php
,所以BaseClassA extends BaseClassB
。
我复制了BaseClassA.php
文件,删除了内容;在BaseClassB
文件中保留了我想要的内容。我运行composer dump-autload
,但我一直收到消息:
致命错误:在'BaseClassA.php。
中找不到类'Tests \ BaseClassB'
两个文件都在同一个文件夹中,具有相同的命名空间。 为什么找不到班级?
所以,我删除了文件BaseClassB,(记得我复制了它);以另一种方式创建它:我右键单击:“创建新类”并键入BaseClassB。该文件具有相同的结构,PhpStorm找到了该类(我的意思是在IDE中没有导入警告)。但是运行时仍然失败(即使在运行composer dump-autoload之后):仍然是Error: class not found ...
我注意到在PhpStorm中,当我的其他类有 php图标时,文件图标是带有浅蓝色背景的 C 。
Q1:为什么?我的所有其他文件也都是类,为什么这个文件的显示方式不同?
这个图标差异困扰我,所以我再次删除了文件并点击:“创建新的php文件”,其中我复制粘贴了我的第一个文件的内容。它突然起作用了。
有没有人经历过这样的事情?我很确定第一次正确编写名称空间等,因为:
Q2:“创建新类”和“创建新的php文件”有何不同?
我问这个是因为它令人沮丧(看起来好像是3次尝试,但我需要花费数小时才能找到它......)