2013-10-03 32 views
1

私有变量与静态变量私有财产和持有静态价值的方法之间的区别?

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; 
    } 
} 

class Input { 
    private 
     $form; 

    public function __construct (Form $form) { 
     $this->form = $form; 
    } 

    public function getForm() { 
     return $this->form; 
    } 
} 

方法我更喜欢后者,因为当你倾销Input对象不包括$form财产。由于它们的循环关系(在示例中未显示),它使输出不可读。

使用后一种方法VS后者有什么缺点?

回答

3

在方法A static变量是恒定横跨类的所有实例中,private属性根本就不是从类的外部到它的每个实例可访问的,但唯一的。他们根本不一样。如果您需要每个类实例唯一的属性,则不会替换属性。它也比你的static替代方法更具可读性和惯用性。

学会阅读var_dump更好,如果这是您使用static变量的唯一原因。

相关问题