2012-11-08 10 views
5

Derzeit verwende ich NetBeans IDE und es hat eine sehr nette Funktion, die zeigt, ob eine Variable definiert ist, aber nicht in ihrem Bereich verwendet wird. Das funktioniert sehr gut, wenn Sie eine Menge alten Code haben und Sie versuchen, die toten Bits daraus zu entfernen.Nicht verwendete Variablen in CakePHP-Ansichten finden

Gibt es ein tool/service/irgendwas, was das selbe aber tun würde, die Variablen finden würde, die in der Steuerung eingestellt werden aber dann nicht in einer Ansicht verwendet werden. Es muss nicht vollautomatisch sein.

Wenn Sie zum Beispiel die folgenden in Ihrem Controller haben:

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

Und der Blick sieht wie folgt aus:

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

Es wäre auf andere Weise markieren oder variable2 identifizieren (vorausgesetzt, dass es wird auch im Layout nicht verwendet).

+0

+1 - Ich werde sehr 0_0 sein, wenn jemand dies auf eine saubere Art und Weise tun kann, da das Problem darin besteht, dass die Variablen, die an die Ansicht übergeben werden, oft in einem Array oder ähnlichem ausgeführt werden.Diese und andere Variablen werden dann lokal definiert. Es ist die Tatsache, dass sie lokal werden und nur existieren, während die Ausführung innerhalb dieser Funktion (zur Laufzeit) das "Problem" ist. Dies bedeutet, dass eine Reflektion nutzlos ist (weil sie nur den Code betrachtet, ihn nicht ausführt, um zu sehen, welche lokalen vars zur Laufzeit mit lets say extract() oder $$ erzeugt werden). Viel Glück. – VBAssassin

Antwort

-3

Drucken Sie einfach $GLOBAL, dies zeigt Ihnen alle Variablen, die Ihnen zur Verfügung stehen.

+2

Es würde alle Variablen zeigen, nicht nur unbenutzte. – gintas

+1

@gintas Wenn sie im '$ GLOBAL' Array sind, sind sie definitionsgemäß" benutzt ", da sie definiert sind. – Neal

+0

Sorry für Verwirrung, in der Frage, fragte ich nach Variablen, die definiert, aber nicht verwendet werden. – gintas

7

Versuchen Sie auf Ihrer Codebasis auszuführen.

Es gibt sogar eine Netbeans plugin dafür. Führen Sie es nicht einfach auf der CakePHP-Quelle selbst aus, sonst werden Sie ein klares Verständnis davon bekommen, wie entsetzlich es gebrochen ist.

Könnte kontraproduktiv sein. Und verursachen Sie eine kognitive Dissonanz der religiösen Natur.

+0

Meine Vermutung ist, dass PHP Mess Detektor wird nicht funktionieren für was Gintas will - da die modale -> Ansicht durch Übergabe der Variablen zur Laufzeit gemacht wird und ich wette PHP Mess Detektor kann das nicht erkennen (und ich werde sein sehr beeindruckt, wenn es möglich ist :) vor allem, weil es lokalen Bereich und nicht global ist. Schöne Entdeckung aber – VBAssassin

0

Ich habe nicht CakePHP in eine Weile benutzt, aber ich erinnere mich die folgenden alle View Variablen ouput unter Verwendung in einer Ansicht

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

Wenn könnte ein guter Ausgangspunkt für jemanden, der bauen will in der Lage, ein Tool zum Erkennen von nicht verwendeten View-Variablen in einer CakePHP-View.

1

Ich kann nur einen Weg, dies zu tun - und es wird nur lassen Sie verfolgen die Parameter über ein Modal an eine Ansicht übergeben, wenn dies so jedes Mal getan.

Erstellen Sie eine Klasse, die ArrayAccess implementiert. Mit der Methode offsetGet() können Sie dann verfolgen, auf welche Variablen im Array zugegriffen wurde (in welchem ​​Fall welche "verwendet" wurden). Verwenden Sie dann die magische Methode __destruct(), um einen Hinweis auf nicht verwendete Variablen auszulösen: D

Dies würde Ihnen sagen, die genauen Variablen aus dem Modal übergeben, die nicht verwendet wurden, aber nur tun können, wenn Sie Folgendes tun :

  • hinzufügen alle Ansicht params vom modal zur Ansicht einer Instanz der Klasse verwendet (mit Array-Zugriff, so dass Sie immer noch $ vars tun können [ ‚name‘] = ‚scott‘ usw.).
  • Die Ansicht wird die Variablen direkt aus dem Objekt wie folgt zugreifen müssen: $ params [ ‚name‘] und nicht die Variablen neu mit so etwas wie Extrakt oder $$

Leider ist es nicht eine sauberere Lösung, Aber es ist alles, woran ich gerade denken kann (es ist 3:30 Uhr morgens).

Verwandte Themen