私人变量
class Input {
private
$form;
public function __construct (Form $form) {
$this->form = $form;
}
public function getForm () {
return $this->form;
}
}
具有静态变量的方法
class Input {
public function __construct (Form $form) {
$this->getForm($form);
}
public function getForm (Form $set_form = null) {
static $form;
if (!$form && $set_form !== null) {
$form = $set_form;
} else if ($form && $set_form) {
throw new \ErrorException('Form has been already set.');
}
return $form;
}
}
我更喜欢后者,因为在转储$form
对象时不包含Input
属性。由于它们的循环关系(示例中未显示),它使输出不可读。
使用后一种方法VS后者有什么缺点?
答案 0 :(得分:3)
方法中的static
变量在类的所有实例中都是常量,private
属性根本无法从类外部访问,但对每个实例都是唯一的它的。他们根本不一样。如果您需要每个类实例唯一的属性,则不能替换属性。对于同样的事情,它比static
解决方法更具可读性和惯用性。
如果这是您使用var_dump
变量的唯一理由,请学习更好地阅读static
。