2012-01-01 71 views
2

我有一个超类,它实例化了我的Sql类,这样所有派生类将能够执行查询,而无需在构造它们时实例化自己的Sql实例。 这工作良好,但我有一个问题,我很困惑自己。其中一个派生类在其构造函数中实例化另一个派生类,所以现在我相信我有2个Sql类的实例打开,因为每个实例化父项。我无法覆盖任何派生类中的父类,因为它们都需要访问数据库实例来执行自己的查询。有没有办法阻止派生类调用父构造函数时,另一个派生类实例化它?防止对象的多个实例

我想传递一个参数给类,只有调用父构造函数,如果满足要求如此。

function__construct($param) { 
    if($param == false) { 
     parent::__construct(); 
    } 
} 

您认为这种方法是否有意义,或者您是否预见到将来会出现任何错误?

+0

您正在寻找Singleton模式HTTP: //stackoverflow.com/search?q=%5Bphp%5D+singleton+ – 2012-01-01 00:29:56

+0

为什么你应用程序中有多个实例,如果你只实例化一次? (关于你的恐惧)。接下来,调用父级的构造函数方法是*不*创建额外的实例。 – hakre 2012-01-01 00:30:15

+0

http://en.wikipedia.org/wiki/Singleton_pattern – 2012-01-01 00:30:40

回答

3

我想你要做的是使用单例模式。要做到这一点,你应该只申报您的构造函数的私有方法:

private function __construct() { 

} 

,并通过调用例如一个静态方法一次初始化:

static function connect_to_mysql() { 
    //procedure of connecting... 
} 

myClass::connect_to_mysql(); 
+0

嗯...我可以尝试单身模式。让我看看它是如何实现的,我会尽快回复您! – Naterade 2012-01-01 00:58:34

+0

我跟它一起MR。 BeatMasta和它的效果很好,谢谢! – Naterade 2012-01-02 15:47:01