Dis*_*oat 3 php getter setter overloading
我已经很好地阅读了关于重载的PHP规范,并且大多数示例似乎只是为了允许定义自定义字段(类似于stdClass).
但是我班上定义的私人领域呢?如何检索/分配这些?我可以切换可能的值并对某些值进行操作:
class A
{
private $name;
private $age;
public function __get( $var )
{
switch ( $var )
{
case 'name':
return $this->name;
break;
case 'age':
return $this->age+10; // just to do something different ;)
break;
default:
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是最好的方法,还是有另一种普遍接受的最佳做法?(我不知道是否可以在类中循环类变量,但是在大多数情况下这是不合适的,因为你不想返回所有内容.)
我广泛使用__get()和__set()AND我声明了我的属性public.我想要两全其美,所以当我输入类实例的名称时,我的IDE可以为我列出公共属性.我是如何让PHP拦截器方法工作的,即使属性是公共的并且在类外可见?
unset()我想要的属性__get()以及__set()在类中使用的属性__construct().
弄清楚这种方法需要几个晚上的挫折:-)