php

Összefűző operátor helyett sprintf

Vajon melyik olvasható könnyebben a következő kódrészletek közül?

$exp = sprintf("/^([0-9][ ]*){%d,%d}$/", 
	$cfg['input']['phone']['min'], $cfg['input']['phone']['max']);
if (preg_match($exp, $request_value) !== 1) {
	...
}
if (preg_match("/^([0-9][ ]*){".$cfg['input']['phone']['min'].",".$cfg['input']['phone']['max']."}$/",$request_value) !== 1) {
...
}

php debugger telepítése

Miután közel fél napot vacakoltam egy programmal, s rájöttem, hogy csak egy break hiányzik az egyik switch-case-ből úgy döntöttem mégis nekiállok, hogy felrakjak egy debuggert a phphez.

Először a DBG-vel találkoztam, van hozzá telepítési útmutató is. Elég sokáig sikerült ezzel is elszórakozni, mert nem igazán értettem elsőre a működés mikéntjét.

Debian alatt szükséges még hozzá néhány csomag a telepített php4-en kívül:

apt-get install php4-dev automake1.4 ddd libreadline5-dev libtool1.4

Ezután jöhet a harmadik pont. Letölteni a forrásokat, kitömöríteni, majd a dbg-2.11.32 könyvtáron belül a ./deferphpize szkriptet futtatni. Nálam a futtatáshoz még az említett fájl harmadik sorának módosítására is szükség volt, amely végül ilyen lett:

phpize=${phpize:-"/usr/bin/phpize"}

Ezután a modules könyvtárban létrejött dbg.so-t másoltam át a /usr/lib/php4/20020429 könyvtárba a többi .so fájl mellé. A modul betöltéséhez a /etc/php4/apache/php.ini-be a következő bejegyzéseket kell felveni:

extension=dbg.so
[debugger]
debugger.enabled = true
debugger.profiler_enabled = true
debugger.JIT_host = 127.0.0.1
debugger.JIT_port = 7869

Apache újraindítás is szükséges. Ha mindent jól csináltál, akkor a phpinfo() kiementében fel kell tünnie a with DBG v2.11.30, (C) 2000,2004 by Dmitri Dmitrienko vagy hasonló sornak, illetve lesz egy dbg nevű táblázat is.

Ezután szükséges a dbg_client lefordítása és feltelepítése is. Ez a szokásos ./configure && make && make install parancsokkal elvégezhető. Ha ez megvan, akkor már neki is lehet fogni a hibakeresésnek.

$ dbg-cli --port=7869
DBG php debugger, version 2.11.32, Copyright 2001, 2005, Dmitri Dmitrienko, www.nusphere.com
dbg>

Ezután a file paranccsal betölthetőek a php fájlok. A hibakereséshez a listen parancsot kell kiadni, amely most a 7869-es porton fog figyelni:

dbg>file index.php
Reading symbols from index.php...done.
dbg>listen
Waiting for debug session (press Ctrl-C to stop)...
Starting program: `index.php' /var/www/index.php:18 
dbg>

Ide csatlakozik majd a php, ha a következő módon hívod meg a debugolandó programot:

http://localhost/index.php?DBGSESSID=0@clienthost:7869

Itt már használhatók az olyan parancsok, mint a step, run, next. Ezekről a help ad bővebb információt. Nálam a break nem nagyon akar működni.

DDD-vel is használható, kicsit kellemesebb grafikus felületet nyújtva, bár nálam az UTF-8 karakterekkel voltak problémái. Ekkor így kell indítani:

ddd --debugger dbg-cli --port=7869
Tartalom átvétel