0

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

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

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

我目前的计划是这样的:

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

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

  3. 重新排列所有文件,让我心满意足。

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

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

4

1 回答 1

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

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

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


PHP 本身有一段魔法解决方案的黑暗历史。他们通常最终会产生更多的问题,然后才能解决。

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

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

这里的共同教训是,代码应该以一种确定性的方式完全按照您的意愿去做,而不是试图比开发人员更聪明。所以花点时间用正确的方式解决您的问题,避免未来的麻烦。

于 2012-06-20T08:28:04.980 回答