Phpstorm 如果类位于不同的命名空间中,则未定义类

Phpstorm 如果类位于不同的命名空间中,则未定义类,phpstorm,Phpstorm,我在phpstorm 8.0.3上设置了一个Yi2项目。我的命名空间结构如下所示: backend\ controllers models ... frontend\ controllers models .. common\ controllers models 我在项目中使用了composer,并在供应商文件夹中安装了各种依赖项 每当我尝试使用不在同一基本命名空间中的类(frontend、backend或common)时,就会出现未定义的类错误。奇怪的是类的

我在phpstorm 8.0.3上设置了一个Yi2项目。我的命名空间结构如下所示:

backend\
  controllers
  models
  ...
frontend\
  controllers
  models
  ..
common\
  controllers
  models
我在项目中使用了composer,并在供应商文件夹中安装了各种依赖项

每当我尝试使用不在同一基本命名空间中的类(
frontend
backend
common
)时,就会出现未定义的类错误。奇怪的是类的名称空间在自动完成中:


另一个奇怪之处是,如果打开带有已定义类的文件,则某些类的未定义类错误将消失。

您必须在
使用
部分nedded class或namespace中声明。例如,如果需要使用
custom\controllers
命名空间中的
BaseController

<?php
namespace frontend\components;

// Add this line
use common\controllers\BaseController;

class Controller extends BaseController {
}

我认为您在composer自动加载方面遇到了一些问题。
尝试:


看来PHPStorm缓存不知何故已损坏。我通过转到
文件
->
使缓存无效/重新启动
,使缓存无效。这删除了我的历史记录,但修复了未定义的类问题。

由于我的PHP语言设置,我遇到了这种情况。我通过在我的一个类中去掉名称空间发现了这一点。错误更改为“标量类型仅在PHP7中可用”

转到
文件->设置->语言和框架->PHP
。将
PHP语言级别
更改为语言版本7或更高版本

编辑:
在这样做之后,
Insert->getter和Setters
mixed
的形式间歇性地生成函数和注释,而不是
string
。我不知道为什么会发生这种情况,但我手动重新创建了所有字段,解决了这个问题。

我必须重置PHPstorm以解决“找不到类”的问题


要有事业心,它让一切都休息了,但它也为你提供了备份当前设置的功能。在那之后,所有的东西都被硬重置了,现在又能工作了。

这是唯一对我有效的东西
composer update
File > Manage IDE Settings > Restore Default Settings...