在CakePHP视图中查找未使用的变量

时间:2012-11-08 18:34:41

标签: php cakephp netbeans

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

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

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

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

视图如下:

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

它会突出显示或以任何其他方式识别variable2(因为它也没有在布局中使用)。

4 个答案:

答案 0 :(得分:7)

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

甚至还有一个Netbeans plugin。只是不要在CakePHP源本身上运行它,否则你将清楚地了解它实际上是多么可怕的破坏。

可能适得其反。并引起你对宗教性质的认知失调。

答案 1 :(得分:1)

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

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

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

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

对不起,这不是一个更清洁的解决方案,但它是我现在能想到的(早上3:30)。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:-3)

只需打印$GLOBAL,即可显示所有可用的变量。