我正在开发一个旧的php Web应用程序。
问题是所有文件的组织或多或少都是随机的。 我最喜欢的是在一个级别上,有一个"包含"文件夹和一个"包含"文件夹。
重新排列所有文件的主要障碍是大多数 require 和 include 语句是原始字符串文件路径,有些是变量。
我目前的计划如下所示:
-
创建一个 super_require($path) 函数,用于检查 path 是否在应有的位置,如果不是,则在整个代码树中搜索结束文件名,直到找到它。
-
搜索替换所有必需和包含 super_require()。
-
将所有文件重新排列到我心满意足的地方。
-
想知道它是如何工作的,因为这个计划似乎很容易出错。
所以我想我的问题是,在这种情况下,有谁知道更好的计划?
- 在
- 工作站上本地重新排列文件
- 修复所有包含项
- 在过渡或开发服务器上进行测试
- 将工作代码传播到生产环境
super_require
的想法是一个滑坡。您还将开始将哪些其他语言结构和库函数包装在魔术函数中?几年后你将如何保持这一点?
尝试通过每次重构使代码和程序结构更好。
PHP本身有着神奇解决方案的黑暗历史。他们往往最终会制造更多的问题,然后他们解决。
寄存器全局变量将自动将 GET 和 POST 变量作为全局范围内的常规变量导入。这使得局外人可以通过将变量值添加到请求中来定义变量值,从而产生大量安全漏洞。
但最相似的例子是魔术引号,它自动将SQL转义添加到所有GET和POST变量中,这让开发人员在获得不用于数据库查询的数据时非常头疼。多年来的解决方案是添加代码来反转魔术引用,这比首先添加它更难忘记,也更容易忘记。
这里的常见教训是,代码应该以确定性的方式完全按照您希望它执行的操作,而不是试图比开发人员更聪明。因此,请花点时间,以正确的方式™解决问题,避免将来的麻烦。