如果我上课的话看起来像这样:
class a {
public $aa;
public $ab;
}
$t = new a();
现在,
如果我输入$t->
,我会在zend Studio下找到一个提示列表,但现在我需要做这样的事情:
class a {
public $aa;
public $ab;
public function __get( $name ){
$this->$name = x;
return $this->$name;
}
}
所以,我该怎么办?首先,我仍然希望获得该提示列表,并且只能列出公共属性。对此有何看法?
答案 0 :(得分:0)
在我看来,你在这里遇到两个相互关联的问题。
如果向类中添加公共字段,则可以在自动完成建议中看到它们,并且编写代码更容易,但如果这样做,则不会执行__get,因为这是一个可见属性,而__get是只调用不可见的属性。
如果删除公共字段(或将其设为私有字段以使其不可见),则会执行__get,但由于没有可见字段,因此您无法获得任何自动填充建议。这样你的代码就可以运行,但是由于没有自动完成建议,你很难编写代码。
所以我对你的建议是完全忘记__get功能。假装它不存在(因为它不会做你想做的事情)。使用成员函数而不是公共属性,您将获得自动完成建议以及您执行的代码。是的,你必须以这种方式实施更多的方法,但这就是生活,你不能总是拥有你想要的一切,你必须妥协。
您可以使用Java书中的内容并定义getter和setter的方法(因此function getName()
和function setName($value)
或者如果您愿意,可以使用function name($value = null)
并设置或者取决于传入的值)或者你可以在构造函数中分配这些值,如果你不关心懒惰部分,你唯一要做的就是分配值。