2

因此,以下是一个奇怪的问题,虽然我确信人们会指责我在这种行为的发生方式上存在不良做法,但为了我正在从事的项目,这就是用例,我很想知道我是否遗漏了什么。

我有以下情况

 class foo()
 {
      private $_bar;

      public function __construct($bar)
      {
           $this->_bar = $bar;
      }

      public function doStuff()
      {
           include('doStuffCode.php');
      }
 }

doStuffCode.php:

 $this->_bar->(this is where I'd like to get some type hinting)

我试图加入,/* var $this->_bar Bar */但这似乎对我没有任何作用。似乎我无法向特定的类变量添加类型提示。目前的解决方法是设置一个名为 $bar 的临时变量,在其上设置类型提示,然后使用它来获取我正在寻找的方法并将它们复制回正确的上下文中。

我很好奇我是否只是在尝试一些错误,做一些不受支持的事情,误解我应该如何声明 javadoc,或者对这种类型提示应该如何工作有一个根本的误解。

谢谢您的帮助

4

1 回答 1

3

您需要在类中定义 $_bar 的类型

  class foo()
  {
        /**
         * @var Bar
         */
        private $_bar;

        public function __construct($bar)
        {
             $this->_bar = $bar;
        }

        public function doStuff()
        {
             include('doStuffCode.php');
        }
   }

然后在您包含的文件中提示:

/* @var $this foo */

这将是这样做的正确方法。尽管由于包含文件内容的范围,我不确定是否可以通过这种方式提示私有变量。

于 2013-01-09T18:32:13.640 回答