【发布时间】:2014-11-30 19:39:00
【问题描述】:
我刚刚开始研究一个更大的预先存在的代码库 (PHP),我注意到很多这些文件以不可读的方式使用包含/要求。文件系统中的includes/requires 是一种级联,因为系统中的几乎每个文件都包含/requires 一个名为common.php 的文件。这个公用文件包含/需要几乎所有其他文件,所以当开发人员有疑问时,他们似乎只是包含/需要公用文件并称之为好。
这是由专业的 Web 开发人员编写的,我还是个学生,所以我很好奇这是否是 PHP 中的常见做法。在 PHP 中是否应该有一个包含/需要所有内容的通用文件,是否应该逐个包含/需要每个文件,或者是否有不同的常见做法?
附带说明:我正在尝试将 api 文件切换为新文件(同时保留旧文件以进行兼容性测试),我很难判断哪些文件使用我的新 api 或旧文件.
【问题讨论】:
-
不,将每个包含都放在一个文件中并不常见。
-
这更多的是根据具体情况,但是您可能想在此处评估 include 和 require 之间的区别:stackoverflow.com/questions/3633900/…
-
至少,如果太乱的话,最好使用 _once 版本:php.net/manual/en/function.include-once.php(还有 require_once)
-
一种常见的做法确实是使用不好的方法,就像你描述的那样。许多自称为专业开发人员的人都这样做。你所描述的是一种不好的方法。正确的方法是在需要时加载包含,也称为“延迟加载”。这就是为什么 php.net 的酷人给了我们自动加载器的原因。更有意识和现代(真正的专业)开发人员使用它。他们走得更远,使用称为 Composer 的依赖管理器工具来管理依赖和自动加载,使整个加载过程变得艰难,包括和不属于过去的事情。
-
是的,这是令人沮丧的普遍现象,尤其是在较旧的代码库中,不,这不是好的做法。好的做法是使用模块化 OOP 代码和自动加载器:php.net/manual/en/function.spl-autoload-register.php。然而,遗留代码就是这样。
标签: php include conventions