2011-08-20 95 views
1

我想加载自己的php类的扩展。我不明白为什么它没有加载。是否有可能从自己加载类扩展?从父类内部加载类扩展PHP

这里是我究竟是什么意思的代码示例。

class Class_B{ 
    public function hi(){ 
      echo('Hello world!'); 
    }  
} 

class Class_D extends parent{ 
    public function Class_D(){ 
      //--> Here is the problematic line 
      $this->class_b->hi(); 
    }  
} 

class parent{ 
    public $class_b; 

    public function __construct(){ 
      $this->class_b = new Class_B; 
      new Class_D(); 
    } 
} 

此代码出现此错误。

调用一个成员函数h()的一个非对象在 /path/to/your/application/test.php上 线59

我需要调用Class_B: :hi()函数使用相同的语法。我读了很多,但我没有找到我需要的东西。在CodeIgniter中,不同的库就是这样调用的。我想在我的程序中实现类似的功能。 谢谢。

+1

究竟是*问题*本?任何错误?尽管在子类和父类之间创建循环依赖关系当然不是一个好主意。 – deceze

回答

4

你肯定不希望调用new Class_D()从父类的构造内。

我认为你正在试图做的是:

class parent { 
    protected $b; 

    public function __construct() { 
      $this->b = new Class_B(); 
    } 
} 

class Class_D extends parent { 
    function __construct() { 
     parent::__construct(); 

     $this->b->hi(); 
    } 
} 
+0

非常感谢。它完美的作品。看起来我忘了调用父类的构造函数 –

1

充分利用hi()静:

class Class_B{ 

    public static function hi(){ 
      echo('Hello world!'); 
    } 

} 

Class_B::hi();