2012-07-26 34 views
0

如果我使用setter进行依赖注入,并且一些类都需要相同的依赖关系,那么我应该让所有这些类扩展一个基类它的依赖关系的设置者?基类中的依赖注入设置器,并将类需要依赖关系作为扩展

因此,例如:

说我有三大类:网页,文章,评论,所有这些都依赖于$ DB和$用户。

有什么好处或具有基础类依赖的缺点,是这样的:

class Dependencies 
    { 
     private $database; 
     private $user; 
     final public function setDatabase($dbh) 
     { 
      $this->database = $dbh; 
     } 

     final public function setUser($user) 
     { 
      $this->user = $user; 
     } 
    } 

,然后有他其他类为依赖

class Article extends Dependencies 
{ 
    public function __construct() 
    { 
     // some code 
    } 

    // some other functions that use $this->database and $this->user 
} 

扩展,而不是SETDATABASE和setUser存在于每个单独的类(Article,Page和Comment)中。

谢谢。

回答

0

拥有一个名为Dependencies的类是个坏消息。文章不是依赖关系的子类型。

这是性状可能更合适的地方。

trait DatabaseOwner 
{ 
    private $database; 

    final public function setDatabase($dbh) 
    { 
    $this->database = $dbh; 
    } 
} 

class Article 
{ 
    use DatabaseOwner; 
} 

如果您发现自己经常使用相同的组合,则可以创建包含多个特征的特征。然而,所有这些说:如果这三个类都从一些更好的命名类下降,它代表一个is-a关系,并且它实现了这些函数(或使用特征),因为它是基类型的内在特征,那么完全可以接受。

但是,创建一个单一的基类只是因为事情发生共享某些属性在我看来并不好。

+0

适当使用性状毫无疑问,但值得一提的是,他们只能从php5.4起 – Crisp 2012-07-26 03:03:37

+0

我想我会使用特质,谢谢。 – 2012-07-26 03:58:17