1

我有一个名为 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 类需要在其声明之后进行,但如果不扩展另一个类,则可以在声明之前进行?

4

1 回答 1

1

从文档:

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

参考这里

并且include没有自动加载......所以有你的问题

于 2012-07-25T10:26:28.503 回答