(megoldva) PHP: változók első előfordulási helyének megkeresése

Sziasztok!

Tudtok valamilyen eszközt vagy editort, ami jól láthatóan kiemeli nekem az összes változóm esetében, hogy mikor használom őket először az adott fájlon belül?

Hozzászólások


function tyuk() {
  global $valtozo;
  $valtozo = 42;
}

function tojas() {
  global $valtozo;
  $valtozo = -42;
}

if (rand() % 2) tyuk(); else tojas();

--
joco voltam szevasz

Sot, mondok jobbat (patch):


function tojas() {
  $GLOBALS['valtozo'];
  $valtozo = -42;
}

esetleg:


  $melyikvaltozo='valt';
  $melyikvaltozo.='ozo';
  $GLOBALS[$melyikvaltozo]=2*42;

ctrl+f altalaban megadja, hogy hova irtad le eloszor azt, hogy valtozo, de hogy hol hasznaltad (foleg ugy, hogy milyen sorrendben), na azt editor legyen a talpan ami elmondja

--
R2D2 a filmtörténet legmocskosabb szájú karaktere.
Minden szavát kisípolták.

Ctrl-F-fel keresni a változó nevére miért nem jó?

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Számít?
Ha nem kell, akkor unset();
Ha pedig állandóan használod -akárhol-, akkor $GLOBALS[];

Még van a szerveren register_globals, de már nem sokáig. Sok olyan kódom van, amiben a kapott értékeket nem $_REQUEST["valami"], hanem $valami formátumban használja az adott script.
Emiatt egy halom kódot át kell néznem, és megkeresni ezeket a változókat. Kézenfekvőnek tűnik számomra, hogy ha látom kiemelve minden változónál az első előfordulás helyét, akkor meg tudom állapítani, hogy az átírandó $_REQUEST["valami"] formátumra vagy sem.

--
Kum G.
Linux pólók HUP pólók Linux tanga

Remek, de a $GLOBALS -nak semmi koze a $_GET/$_POST/$_REQUEST -hez alapvetoen.

Utobbi harommal a get/post parametereket kapod (izles kerdese, de en jobb szeretem onnan beolvasni, ahonnan varom: ha nem onnan jon, sanszos, h trukkozes van a hatterben), mig a $GLOBALS az osszes globalis valtozora tartalmaz egy referenciat.

A registered_globals beallitas meg egy csunya, ronda dirty hack, aminek sose kellett volna bekerulnie a nyelvbe. (Mellesleg kiszedhettek volna az 5.0-bol is: lathatoan vannak meg mindig, akik nem keszultek fel ra.)

----------------
Lvl86 Troll

Persze, azért is írtam, hogy ennek az a feltétele, hogy jónak gondolod, amit csináltál. Nyilván nem arról beszélek, hogy nem annyiszor fut le egy ciklus, ahányszor kellene, aztán a számláló kezdőértékén módosítsunk egyet, mert ez adott esetben lehet tüneti kezelés, de ha elvi hiba van, más esetekre éppen rossz lesz.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

ott hasznalod eloszor, ahol notice-t kapsz ra, mert undefined.

t

awk a baratod. Esetleg seddel kiszeded a valtozoneveket, greppel meg megkeresed, hol van eloszor hasznalva.

En anno seddel tortem szokozt sorra, majd kiszedtem a $[a-zA-Z_][a-zA-Z0-9_]* -ra illeszkedo valtozoneveket, sort, uniq, es egyesevel kikerestem az elso hivatkozast.

Jol jon ez is talan: http://adamnemeth.hu/2010/07/15/architect-dolgok-testing-legacy-php-app…

Nekem arra kellett hogy atirjak mvc-be legacy kodot, remelem, neked is :)

Bármelyik normálisabb IDE kiemeli neked színessel, hogy hol használod és hol adsz neki értéket először.

----------------
Lvl86 Troll

De ezek annyira alapveto feature-k. :) Ma mar nem a kodszinezes es az integralt debugger a fejlesztes csucsa (bar PHP-nel meg ez is macera :P), hanem a minel okosabb kodkiegeszito, a refactoring es a futasidoben torteno kodmodositas (.NET/VS edit&continue, Java HotSwap, stb. -- igaz, ezek nem scriptnyelvek)

----------------
Lvl86 Troll

Amikor legutoljara hasznaltam eclipse-et, max phpdoc doksit tudott olvasni de qqqqqqrva lassan, amire rajott hogy mi a fuggveny, en elolvastam a fajlt...

Refactorbol egyszer vegigmentem minden egyes menuponton, feature not implemented.

Mondjuk elnezve a spring kodok tobbseget, javaban se nagyon hasznalja az atlag eclipse user a kodkiegeszitesen tul levo feature-oket...

Maradok vim-nel, van kodkiegeszites, szinezes, cserebe gyors es tudok refacto makrokat irni.

Nem szeretek onmagamtol idezni, de: "(bar PHP-nel meg ez is macera :P)"

(Egyebkent melyik Eclipse volt? Europa-s PDT jo volt, Ganymede-rol nincs tapasztalatom, Galileo a 2.0-as PDT-vel ugy egy halom foskupac volt (picit tul sokat akartak meginnovalni), mostani Helios/Indogo-s verziok nagyjabol jok.

Refactoring meg sose lesz jo PHP-hez, maga a nyelv alkalmatlan ra. Arrol meg nem tehetek, hogy az atlag Java koder milyen.

----------------
Lvl86 Troll

2010 nyara, Europa vagy eggyel utani.

Refactoring lehet jo PHP-hez, csak ismerni kell az adott projekt coding conventionjeit. Ezt makrokba meg codesnifferekbe siman bele lehet irni, nem az az elsodleges "baja" a PHP-nek, hogy nem tipusos, hanem hogy nem eroltet rad stilust, ellentetben a javaval, ahol az is adott, milyen nevu fajl milyen konyvtarba lehet.

A számomra eddig legjobban bevált megoldás: a KDevelop-ban kék azoknak a változóknak a színe, amik még nem kaptak értéket, így könnyen megtalálom a módosítandó változókat.

Köszönöm mindenkinek!

--
Kum G.
Linux pólók HUP pólók Linux tanga