2012-05-14 34 views
0

我决定玩得开心,并且在PHP中实现.Net属性。各地类似PHP&Implementing .Netish Properties

我现在的设计中心:

$var; 

method Var($value = null) 
{ 
if($value == null) { 
return $var; 
} 
else { 
$var = $value; 
} 

} 

显然,这种跑入位,如果有人试图设置属性(以及相关的变量)为空的问题,所以我想创造的一个永远不会使用的一次性类。想法,评论?

回答

2

不要重新发明轮子。 PHP已经提供了可用于实现类似于.NET的属性的神奇方法__get__set;文档页面上有示例。 PHP框架也使用这些钩子将代码执行重定向到适当的getter/setter方法(由于你自己发现的原因,它们确实需要有区别),以便只读属性也可以实现;一个(无可否认的复杂)例子是this

临提示:如果你忽略__get__set,你还需要重写__isset__unset让你的类可以继续在结构,如emptyunset存在直观表现。

0

我不明白你想在这里实现什么。你想要一个吸气?

public function getVar() { 
    return $this->var; 
} 

你想一个二传手?

public function setVar($newVar) { 
    $this->var = $newVar; 
} 

你甚至可以把它公开,并在外面有人来设置VAR:

public $var; 
... 
$object->var = "New Var";