2012-11-08 12 views
5

Attualmente, sto usando l'IDE NetBeans e ha una funzionalità molto bella che mostra se una variabile è definita ma non è utilizzata nel suo ambito. Funziona molto bene se hai un mucchio di vecchio codice, e stai cercando di rimuovere i bit morti da esso.Ricerca di variabili inutilizzate nelle viste CakePHP

Esiste uno strumento/servizio/qualsiasi cosa, che farebbe la stessa cosa ma che troverà le variabili impostate nel controller ma non utilizzate in una vista. Non deve essere completamente automatico.

Per esempio, se avete il seguente nel controller:

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

E la vista si presenta in questo modo:

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

Sarebbe evidenziare o in qualsiasi altro modo di individuare variable2 (dato che non è usato anche nel layout).

+0

+1 - Sarò molto 0_0 se qualcuno può farlo in modo pulito poiché il problema è che le vars passate alla vista sono spesso fatte in modo simile in una matrice o simili.Quelli, insieme ad altri vars, vengono quindi definiti localmente. È il fatto che diventano locali e esistono solo mentre l'esecuzione è all'interno di quella funzione (in fase di esecuzione) che è il "problema". Ciò significa che la riflessione è inutile (perché guarda solo il codice, in realtà non lo esegue per vedere quali oggetti locali vengono creati in fase di esecuzione usando diciamo extract() o $$). In bocca al lupo. – VBAssassin

risposta

-3

Basta stampare $GLOBAL, questo mostrerà tutte le variabili che sono disponibili.

+2

Mostrerebbe tutte le variabili, non solo quelle inutilizzate .. – gintas

+1

@gintas Se sono nell'array '$ GLOBAL' sono per definizione" usati "poiché sono definiti. – Neal

+0

Ci scusiamo per la confusione, nella domanda che ho posto sulle variabili che sono definite, ma non utilizzate. – gintas

7

Prova a eseguire PHP Mess Detector nella base di codici.

C'è anche un Netbeans plugin per quello. Basta non eseguirlo direttamente sulla fonte di CakePHP, altrimenti capirai quanto sia orribilmente rotto.

Potrebbe essere controproducente. E causa una dissonanza cognitiva della natura religiosa.

+0

La mia ipotesi è che PHP Mess Detector non funzioni per quello che vuole il gintas - dal momento che la vista modale -> è fatta passando le variabili in fase di esecuzione e sto scommettendo che PHP Mess Detector non può rilevarlo (e io sarò molto impressionato se può :) specialmente dal suo ambito locale e non globale. Bella scoperta però – VBAssassin

0

Non ho usato cakePHP in un po ', ma mi ricordo di essere in grado di ouput tutte le variabili vista utilizzando il seguente in una vista

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

Se potrebbe essere un buon punto di partenza per chi vuole costruire uno strumento per rilevare le variabili di vista inutilizzate in una vista cakePHP.

1

Posso solo pensare a UN modo per farlo, e SOLO ti consentirà di tenere traccia dei parametri passati a una vista tramite una modale se fatto così ogni volta.

Creare una classe che implementa ArrayAccess. Quindi usando il metodo offsetGet() questo ti permetterà di tracciare quali variabili sono state usate nell'array (nel qual caso, quali sono state "usate"). Quindi usa il metodo magico __destruct() per attivare un avviso di eventuali variabili inutilizzate: D

In questo modo ti dirò le esatte variabili passate dal modale che non sono state utilizzate ma possono farlo solo se fai quanto segue :

  • aggiungere tutti i params vista dalla modali alla vista utilizzando un'istanza della classe (con accesso agli array in modo da poter ancora fare $ Vars [ 'name'] = 'scott' ecc).
  • La vista sarà necessario accedere alle variabili direttamente dall'oggetto in questo modo: $ params [ 'name'] e non ricreano le variabili che utilizzano qualcosa come estratto o $$

Ci dispiace non è una soluzione più pulita, ma è tutto ciò a cui riesco a pensare adesso (sono le 3:30).

Problemi correlati