【发布时间】:2012-05-31 09:16:18
【问题描述】:
场景: 我们正在将应用程序从 PHP 4 转换为 PHP 5。该应用程序需要能够在 PHP 4 上工作一段时间,这意味着目前还不能使用 PHP 5 特定的元素。我们只是想确保应用程序在两个平台上都能正常工作。
应用中有很多这样的条件:
if ($variable) { // do something }
其中一些变量最终根本没有被定义,我们正在努力减少错误的数量(错误很多)。
为了解决这些错误,我们在各个方面添加了检查,如下所示:
if (!isset($variable)) $variable = "";
或
if (!empty($variable)) { // do something }
问题: 有谁知道修复这些错误的更简单方法。问题是这些变量被跨文件使用(通过包含)并且定义变量可能会改变该文件中的逻辑流程,如果它执行类似的检查(if (!isset($variable)) { // do something }) .
这个问题的重点是减少跟踪这些变量的每个单独使用的错误和时间消耗。目前,我们要么彻底检查变量在做什么(这可能需要很长时间),要么我们正在做“一劳永逸”/希望是固定的更正方法。
-- 编辑-- 有谁知道像 cppcheck for php 这样的程序可以以某种方式引用这些变量或创建某种可以找到错误并链接可能引用的链接? (我希望这是有道理的。)
【问题讨论】:
-
使用
isset或empty有什么问题?只是工作量很大? -
对我来说,重写(直接到 PHP5.3)听起来不像重构那么复杂。
-
@ExplosionPills - 它有时可以改变程序的逻辑流程。如果有条件检查是否设置了变量,则设置变量可能会在以后破坏它。这是一个大型应用程序。
-
但未定义的变量只会在 PHP 5 中返回一个通知,而不是致命错误......
-
@Flukey:错误就是错误。不管是什么,都应该修好。