PHPdoc字段继承:字段' xxx'没有找到&x; xxx'

时间:2018-03-10 15:38:29

标签: php inheritance phpdoc

我正在尝试记录我的代码并删除我的代码上的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}}

我该如何解决这个问题?

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用于表示局部变量的类型时才需要。在类属性的情况下,包括属性名实际上只是使用属性名作为“描述”部分的第一个单词。