2016-07-26 82 views
1

我有一个主类中index.php使用包括在课堂上正确

class myClass { 

    public function lorem() { 
     include_once 'extendClass.php'; 
    } 

    public function __construct() { 
     $this->lorem(); 
    } 

} 

// run class 
new extendClass(); 

我需要include_once 'extendClass.php'lorem()函数中。

在我extendClass.php文件,我谨向与类功能:

class extendClass extends myClass { 

    public function lorem(){ 
     echo "foo bar"; 
     parent::lorem(); 

    } 

} 

当我使用index.phpnew extendClass(),我得到一个错误,因为include_once()不会被触发。这个难题的解决方案是什么?

注意:include_once()必须在myClass之内。

+0

不能嵌套类之外声明。 – Rizier123

+0

@ Rizier123在这种情况下,我唯一的选择是创建两个完全分离的类吗?请详细说明。 –

+0

是的。此外,嵌套类甚至能够从尚未定义的类中扩展出来?所以你可能想要在它下面定义它。 – Rizier123

回答

3

这里有两个问题

  1. 你正在创建一个改写了该lorem()功能的子类。您将不得不明确地致电parent::lorem()以获得它
  2. 即使您调用它,执行include的父功能意味着该函数中定义的任何内容都是本地范围为该功能。因此,这意味着你的孩子函数不能继承它(至少在没有某种return声明)

你需要移动包括类声明

include_once 'extendClass.php'; 
class myClass { 

    public function lorem() { 
    } 

    public function __construct() { 
     $this->lorem(); 
    } 

} 

// run class 
new extendClass();