我的php应用程序目录结构是一个迷宫


My php app directory structure is a labyrinth

我正在开发一个旧的php Web应用程序。

问题是所有文件的组织或多或少都是随机的。 我最喜欢的是在一个级别上,有一个"包含"文件夹和一个"包含"文件夹。

重新排列所有文件的主要障碍是大多数 require 和 include 语句是原始字符串文件路径,有些是变量。

我目前的计划如下所示:

  1. 创建一个 super_require($path) 函数,用于检查 path 是否在应有的位置,如果不是,则在整个代码树中搜索结束文件名,直到找到它。

  2. 搜索替换所有必需和包含 super_require()。

  3. 将所有文件重新排列到我心满意足的地方。

  4. 想知道它是如何工作的,因为这个计划似乎很容易出错。

所以我想我的问题是,在这种情况下,有谁知道更好的计划?

  1. 工作站上本地重新排列文件
  2. 修复所有包含项
  3. 在过渡或开发服务器上进行测试
  4. 将工作代码传播到生产环境

super_require的想法是一个滑坡。您还将开始将哪些其他语言结构和库函数包装在魔术函数中?几年后你将如何保持这一点?

尝试通过每次重构使代码和程序结构更好


PHP本身有着神奇解决方案的黑暗历史。他们往往最终会制造更多的问题,然后他们解决。

寄存器全局变量将自动将 GET 和 POST 变量作为全局范围内的常规变量导入。这使得局外人可以通过将变量值添加到请求中来定义变量值,从而产生大量安全漏洞。

但最相似的例子是魔术引号,它自动将SQL转义添加到所有GET和POST变量中,这让开发人员在获得不用于数据库查询的数据时非常头疼。多年来的解决方案是添加代码来反转魔术引用,这比首先添加它更难忘记,也更容易忘记。

这里的常见教训是,代码应该以确定性的方式完全按照您希望它执行的操作,而不是试图比开发人员更聪明。因此,请花点时间,以正确的方式™解决问题,避免将来的麻烦。