我正在尝试记录我的代码并删除我的代码上的IDE警告。我正在使用IntelliJ IDEA。
我有两个类,第一个是这样的抽象abstract class Controller {
/** @var Service $service */
public static $service;
...
}
:
UserController
第二个是/** @property UserService $service */
abstract class UserController extends Controller {
public static function testService() {
static::$service->testMethod();
}
...
}
,它扩展了第一个:
UserService
我的问题:
@property
标记的Method 'testMethod' not found in Service
上声明新功能,我的IDE会告诉我@property
Field '$service' not found in UserController
,则IDE会告诉我{{1}} 我该如何解决这个问题?
答案 0 :(得分:1)
我会通过属性覆盖来解决这个问题...这不应该妨碍代码逻辑本身:
abstract class Controller {
/** @var Service */
public static $service;
...
}
abstract class UserController extends Controller {
/** @var UserService */
public static $service;
public static function testService() {
static::$service->testMethod();
}
...
}
旁注:类属性的@var
语法不需要重复的变量名...只有在@var
用于表示局部变量的类型时才需要。在类属性的情况下,包括属性名实际上只是使用属性名作为“描述”部分的第一个单词。