我决定玩得开心,并在PHP中实现.Net属性。
我目前的设计主要围绕以下内容:
$var;
method Var($value = null)
{
if($value == null) {
return $var;
}
else {
$var = $value;
}
}
显然,如果有人试图将属性(和关联变量)设置为null,这会遇到一些问题,所以我想创建一个永远不会被使用的一次性类。思考,评论?
答案 0 :(得分:2)
不要重新发明轮子。 PHP已经提供了可用于实现.NET-lookalike属性的魔术方法__get
和__set
;文档页面上有一些示例。 PHP框架还使用这些钩子将代码执行重定向到正确的getter / setter方法(由于您自己发现的原因,这些方法确实需要不同),以便也可以实现只读属性;一个(公认的复杂)例子是this。
专业提示:如果您覆盖__get
和__set
,则还需要覆盖__isset
和__unset
,以便您的班级可以继续在存在empty
和unset
等构造。
答案 1 :(得分:0)
我不明白你在这里想要达到的目标。你想要一个吸气剂吗?
public function getVar() {
return $this->var;
}
你想要一个二传手吗?
public function setVar($newVar) {
$this->var = $newVar;
}
您甚至可以将其公开并让外部人员设置var:
public $var;
...
$object->var = "New Var";