从安装员那里退回是错误的OOP POV?

时间:2012-02-07 12:00:57

标签: php oop setter getter-setter

从setter错误的OOP POV返回$this(用于setter链接)?

class Person
{

   protected $firstName, $lastName;

   public function __construct($first = null, $last = null)
   {
      $this->firstName = $first;
      $this->lastName  = $last;

   }

   public function setFirstName($first)
   {
      $this->firstName = $first;
      return $this;
   }

   public function setLastName($last)
   {
      $this->lastName = $last;
      return $this;
   }
}

$p = new Person();
$p->setFirstName('John')->setLastName('Smith');

2 个答案:

答案 0 :(得分:1)

这是在编码时提供“可用性”的常用方法。我更喜欢在一个项目中做到这一点,或者根本不这样做。否则可能会让人感到困惑。

答案 1 :(得分:1)

我不认为这是不好的做法,Zend框架使用它(我认为它是一个很好的PHP代码,几乎可以利用php提供的所有功能)。 Here's a nice article示例。

它允许您编写简化的代码而无需重复访问变量,更好的可读代码是重要的。

对象总是(在php5中)作为引用返回,因此它不应带来任何开销。

无论如何,我会将所有函数重新声明为public function &setFirstName($first),以明确表示您希望在下次调用中重写对象本身,但这绝对没有必要。

参考编辑

这里描述了references are(也读了他们做什么和不做什么)以及如何从功能return reference。如前所述,php 5“works with object as reference by default”(不完全正确,阅读文章)所以在函数名称之前添加&是没有必要的,但你会明确(和明确)“我想使用对象引用”