无法同时扩展和实施

时间:2014-10-21 18:11:42

标签: php oop

当我尝试实例化以下内容时出现错误:

$main = new Main();
$main->run();    

class Main
{
  public function run() {
    $instance = new C();  
  }
}

错误:

Fatal error: Class 'C' not found in /path/to/file/test.php on line xx

所有内容都需要在同一个文件中,因此我对类和接口进行了以下设置:

interface A { ... }
abstract class B { ... }
class C extends B implements A { ... }

这个顺序是有道理的,我无法弄清楚它为什么不起作用。此外,Main类在接口A之前定义。

1 个答案:

答案 0 :(得分:0)

代码顺序不正确。像大多数解释器和编译器一样,php是一种从上到下的语言,这意味着必须在使用之前定义所使用的所有内容。

代码的正确顺序如下:

/*1*/ interface A { ... }
/*2*/ abstract class B { ... }
/*3*/ class C extends B implements A { ... }
/*4*/ class Main
      {
          public function run()
          {
              $instance = new C();  
          }
      }
/*5*/ $main = new Main();
/*6*/ $main->run();