我有具有函数hi()的父类c1。类c2扩展c1,并通过方法i()包含单例访问。在类c2中,我想使用与c1中相同的名称创建方法,我可以在静态作用域中调用该方法,但在此方法中,我使用单例实例和父类中相同名称的调用方法。如何从实例范围的父类中调用具有相同名称的方法
class c1{
function hi(){
echo 'very '.$this->a;
}
}
class c2 extends c1{
private static $i;
public static function i() {
return (self::$i)?self::$i:(self::$i = new self);
}
public $a='cool';
function hi(){
self::i()->hi(); // here I want to call hi() from c1 but in instance scope
}
}
c2::hi(); //must echo: very cool
在真实的例子
C1是mysqli的
C2是我的自定义DB类
和喜()被提交()
我希望能够调用DB ::提交(),所以我不需要编写db :: i() - > commit();
编辑:PHP < 5.3
我不能老是叫静态。我必须使用从方法i()获得的现有连接调用mysqli实例上的提交。 – codez 2010-06-27 08:21:06
是的,我想过给不同的名字,但我想保持原来的。 – codez 2010-06-27 08:35:17