gpt4 book ai didi

PHP:require_once 和继承

转载 作者:行者123 更新时间:2023-12-01 23:09:42 24 4
gpt4 key购买 nike

如果我有:

require_once("bla.php");
class controller{.....}

如果我随后在不同的文件中创建class control_A extends controller{...},我是否需要再次说出require_once("bla.php"); ,还是遗传的?

如果 require_once 是在类 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{...}

如您所见,只需要求controller.php,现在就可以看到并解析 Controller 的必要定义。您不能做的是省略 Controller 的声明。这不仅是因为您在声明时需要 bla.php,而且您无法扩展尚未声明的类。所以下面的代码:

class control_A extends controller{...}

将会给你一个错误,因为 Controller 尚未定义。

但是,需要考虑一件事 - 由于类 controller 不扩展任何其他类,因此它不应该有任何外部依赖项。很有可能,无论您在定义类之前必须运行的 bla.php 中执行的任何操作,要么是不必要的,要么是可以重构的。在定义 controller 之前,bla.php 到底需要做什么?

关于PHP:require_once 和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com