上面的类实例化与类声明之下

时间:2012-07-25 07:47:01

标签: php oop inheritance instantiation

我有一个名为UserController的类,它通过对UserController.php的ajax调用在其自己的声明之上实例化。它按预期工作。

<?php
new UserController();

class UserController{
  //constructor
  //methods
}
?>

现在我想为我的所有控制器提供一些常用功能,并通过扩展baseController来实现。

<?php
//include BaseController
new UserController();

class UserController extends BaseController{
  //constructor
  //methods
}
?>

但是,我在尝试实例化时收到此消息:

致命错误:在C:\ xampp \ htdocs \ project \ controllers \ UserController.php中找不到类'UserController'

如果我将实例化移动到声明之后。一切正常。

<?php
//include BaseController

class UserController extends BaseController{
  //constructor
  //methods
}

new UserController();
?>

有人可以对此有所了解吗?

为什么实例化UserController类需要在这种情况下声明之后完成,但如果没有扩展另一个类,可以在声明之前完成吗?

1 个答案:

答案 0 :(得分:1)

来自文档:

  

除非使用自动加载,否则必须在使用之前定义类。如果类扩展另一个类,则必须在子类结构之前声明父类。此规则适用于继承其他类和接口的类。

Reference here

include未自动加载...因此存在您的问题