如果我有:
require_once("bla.php");
class controller{.....}
如果我然后在不同的文件中创建class control_A extends controller{...}
,我需要再说一遍require_once("bla.php");
,还是继承?
如果在定义require_once
内完成class controller
怎么办?
如果我有:
require_once("bla.php");
class controller{.....}
如果我然后在不同的文件中创建class control_A extends controller{...}
,我需要再说一遍require_once("bla.php");
,还是继承?
如果在定义require_once
内完成class controller
怎么办?
到目前为止,我们有两个相互矛盾但同样正确的答案 =) 让我们看看我是否不能将两者结合成一个更具体的总答案。
如果任何类需要任何代码或定义bla.php
,那么您将需要include("bla.php")
在脚本的整个运行时中至少有一次。如果您以前的代码:
require_once("bla.php");
class controller{.....}
是在文件中,controller.php
那么您可以control_A
通过以下方式创建:
require_once("controller.php");
class control_A extends controller{...}
这是因为该require_once()
函数本质上是将文件的内容复制并粘贴到该行的脚本中。因此,上面的内容将被视为等同于:
/* INSERTED FROM controller.php */
/* INSERTED FROM bla.php */
necessary definitions for controller
/* END bla.php */
class controller{.....}
/* END controller.php */
class control_A extends controller{...}
如您所见,只需通过 requires controller.php
,即可看到和解析控制器的必要定义。你不能做的是省略controller
. 这不仅是因为您bla.php
在声明它时需要它,而且您不能扩展尚未声明的类。所以下面的代码:
class control_A extends controller{...}
由于尚未定义控制器,因此会给您一个错误。
然而,需要考虑的一件事——因为该类controller
不扩展任何其他类,它不应该有任何外部依赖项。很有可能,bla.php
在定义类之前必须运行的任何操作都是不必要的,或者可以重组。bla.php
在定义之前您需要做什么controller
?
只要您包含继承的类,就不需要再次要求。
IE
类1.php:
require_once("tools.php");
class class1 {
}
类2.php:
require_once("class1.php");
class class2 extends class1 {
}