0

场景:我们正在将应用程序从 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 这样的程序可以以某种方式引用这些变量或创建某种可以找到错误并链接可能引用的链接?(我希望这是有道理的。)

4

1 回答 1

0

AFAIK 有一个代码检查器,可以查找未初始化的变量,它可以正常工作。您可以处理它的消息,它被称为PHP Mess Detector,其中一条规则涵盖未初始化的变量。然而,这永远不可能是完美的。

另一种方法是跟踪错误消息并使用它们来定位代码中的位置。我过去做过,效果很好,只需在迭代中进行并保留警告日志即可。

您还可以在请求开始时使用白名单并导入列入白名单的变量。未列入白名单的提交需要导致访问冲突错误才能使其正常工作,因此这种方式比跟踪警告更有效,尽管它可能会使您的应用程序更安全。

另请参阅:

于 2012-05-28T11:32:02.120 回答