Phpdoc,如何为代码完成定义一个实际上不存在的变量?

时间:2017-07-16 07:59:46

标签: php ide phpdoc

给出了这个例子:

class Example
{
    private $var;

    public function method()
    {
        $this->   here the IDE will offer the var
    }
}

但如果我有这个:

class Example
{
    //private $var;

    public function method()
    {
        $this->   var will no longer be offered
    }
}

所以换句话说,即使没有实际的变量,我希望代码完成工作。那是因为我想使用__get方法。不幸的是,我无法使用unset($this->var)

2 个答案:

答案 0 :(得分:1)

这是您使用@property标记的情况的一个很好的例子。它甚至提到了魔术方法__get__set的例子。

在您的情况下,它可能类似于以下内容:

<?php

class Example
{
    /**
     * @property string $var A variable that can be set and gotten with the magic methods
     */

    public function method()
    {
        $this->var; //here the IDE will offer the var
    }

    public function __get($name)
    {
        return $this->$name;
    }
}

?>

另外,请注意以下事项:

  

魔术方法不能代替getter和setter。它们只允许您处理方法调用或属性访问,否则会导致错误。因此,与错误处理有更多相关。另请注意,它们比使用正确的getter和setter或直接方法调用慢得多   Gordon on PHP __get and __set magic methods

答案 1 :(得分:0)

由于这一点,如果我们将使用受保护的变量,则将此变量用于同一个调用,也用于子类。