私有属性和持有静态值的方法之间的区别?

时间:2013-10-03 10:14:52

标签: php

私人变量

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后者有什么缺点?

1 个答案:

答案 0 :(得分:3)

方法中的static变量在类的所有实例中都是常量private属性根本无法从类外部访问,但对每个实例都是唯一的它的。他们根本不一样。如果您需要每个类实例唯一的属性,则不能替换属性。对于同样的事情,它比static解决方法更具可读性和惯用性。

如果这是您使用var_dump变量的唯一理由,请学习更好地阅读static