PHP&实现.Netish属性

时间:2012-05-14 19:46:39

标签: php

我决定玩得开心,并在PHP中实现.Net属性。

我目前的设计主要围绕以下内容:

$var;

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

}

显然,如果有人试图将属性(和关联变量)设置为null,这会遇到一些问题,所以我想创建一个永远不会被使用的一次性类。思考,评论?

2 个答案:

答案 0 :(得分:2)

不要重新发明轮子。 PHP已经提供了可用于实现.NET-lookalike属性的魔术方法__get__set;文档页面上有一些示例。 PHP框架还使用这些钩子将代码执行重定向到正确的getter / setter方法(由于您自己发现的原因,这些方法确实需要不同),以便也可以实现只读属性;一个(公认的复杂)例子是this

专业提示:如果您覆盖__get__set,则还需要覆盖__isset__unset,以便您的班级可以继续在存在emptyunset等构造。

答案 1 :(得分:0)

我不明白你在这里想要达到的目标。你想要一个吸气剂吗?

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

你想要一个二传手吗?

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

您甚至可以将其公开并让外部人员设置var:

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