5

目前,我正在使用 NetBeans IDE,它有一个非常好的功能,可以显示变量是否已定义但未在其范围内使用。如果您有一堆旧代码,并且您正试图从中删除死位,这将非常有效。

是否有工具/服务/任何东西,它会做同样的事情,但是会找到在控制器中设置但在视图中未使用的变量。它不必是全自动的。

例如,如果您的控制器中有以下内容:

$this->set(array(
     'variable1' => $variable1,
     'variable2' => $variable2
)); 

视图如下所示:

<p>Peter ate <?php echo $variable1; ?> apples.

它会突出显示或以任何其他方式标识variable2(假设它也未用于布局)。

4

4 回答 4

7

尝试在您的代码库上运行PHP Mess Detector

甚至还有一个 Netbeans插件。只是不要在 CakePHP 源代码本身上运行它,否则你会清楚地了解它实际上是多么糟糕。

可能会适得其反。并导致你对宗教性质的认知失调。

于 2012-11-08T18:48:51.347 回答
1

我只能想到一种方法来做到这一点 - 如果每次都这样做,它只会让你跟踪通过模式传递给视图的参数。

创建一个实现 ArrayAccess 的类。然后使用 offsetGet() 方法,这将允许您跟踪数组中哪些变量已被访问(在这种情况下,哪些变量已被“使用”)。然后使用 __destruct() 魔术方法来触发任何未使用变量的通知:D

这样做会告诉您从模态传入的确切变量尚未使用但只有在您执行以下操作时才能这样做:

  • 使用类的实例将模式中的所有视图参数添加到视图(具有数组访问权限,因此您仍然可以执行 $vars['name'] = 'scott' 等)。
  • 视图需要像这样直接从对象访问变量: $params['name'] 而不是使用 extract 或 $$ 之类的东西重新创建变量

抱歉,这不是一个更清洁的解决方案,但这是我现在能想到的(现在是凌晨 3:30)。

于 2012-11-18T03:37:54.000 回答
0

我有一段时间没有使用 cakePHP 但我记得能够通过在视图中使用以下内容来输出所有视图变量

<?php pr($this->_viewVars); ?>

对于想要构建一个工具来检测 cakePHP 视图中未使用的视图变量的人来说,如果可能是一个很好的起点。

于 2012-11-17T02:10:09.707 回答
-3

只需打印出来$GLOBAL,这将向您显示所有可用的变量。

于 2012-11-08T18:36:21.590 回答