给出了这个例子:
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)
。
答案 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)
由于这一点,如果我们将使用受保护的变量,则将此变量用于同一个调用,也用于子类。