PHPã§äžæã«ãããã°ããŠå¹çã®ããéçºã身ã«ã€ããã
PHPã§ã®ãããã°ã®ä»æ¹ã«ã€ããŠãŸãšããèšäºã§ãããããã°ããã䟡å€ã«ã€ããŠãè¿ éãªéçºã«ã¯æ¬ ãããªããšããããšãåŠã¹ãŸãããŸãããããã°ã®ä»æ¹ãšããŠãvar_dump颿°ã䜿ã£ãŠãªã«ãã§ããããdebug_backtrace颿°ã§ãªã«ãã§ãããã解説ããŸããPHPã§ã®éçºã§ã¯ãããŸãã«èªåã®æžããã³ãŒããæ£ããæ©èœããŠãããã©ããã確èªããã®ã¯ãšãŠã倧åã§ãããŸããæã£ãéãã«åäœããŠããªããšããã£ããšãã«ãã©ããééã£ãŠããã®ãããã¡æ©ãçªãæ¢ããããšãã§ããèœåããéçºã®ããã«ã¯å¿ èŠã§ãã
ãã®èšäºã§ã¯ãPHPã®ã³ãŒãã£ã³ã°ã®éã«ãã©ã®ããã«ãããã°ãããªããé²ããŠããããã解説ããŸãã
PHPã§ãããã°ãããæå³
倿°ãã©ããªã£ãŠãããã確ããã
PHPã§ã®éçºã§ã³ãŒãã£ã³ã°äœæ¥ãããŠãããšãã«ããããã°ãããããšã¯ãšãŠã倧åã§ããããšã©ãŒãããããšãããã£ãŠãããã ãããããã°ã®ã¿ã€ãã³ã°ãšããããã§ã¯ãªãã®ã§ãã
ãšã©ãŒã«ãªã£ãŠããŸãåãããæã£ãŠããéãã«æ£ããåããŠãããããã¡ããšç¢ºèªããªããã³ãŒãã£ã³ã°äœæ¥ãé²ããçãã€ããŸãããã
ããšãã°ããªã«ãã®èšç®ããã倿°ã¯ãæã£ãéãã«ãªã£ãŠãããã確èªãããšããã§ãããã
æã£ãéãã«ãªã£ãŠããªããŠãããšã©ãŒã«ãªãããã§ã¯ãªããšããã±ãŒã¹ãå€ãååšããŸãããªãããã®è¿ãå€ãåŸãã³ãŒããæžãããšãã«ããã®å Žã§ãæã£ãéãã®åäœãããŠããããããã€ãæ¡ä»¶ãå€ããªããã確èªããããã«ã§ããŸãããããããšãã³ãŒããæžãé²ãã§ãããããšã§ééããçºèŠããŠå·»ãæ»ããªããééããçºçããç®æãæ¢ããšããç¡é§ãªæéãçç¥ã§ããããã«ãªãã®ã§ãã
ã©ãã«ãšã©ãŒãããã®ãããããªããšããç¶æ ã¯ãããã°ã©ããŒã«çžåœã®ã¹ãã¬ã¹ãäžããŠããŸããŸãããããã²ãããªããªãããã«ããŸãããã
ãšã©ãŒã®ç®æãèŠæ¥µãã
ãããæžããã³ãŒããæã£ãããã«åäœããããšã©ãŒãšãªã£ãŠããŸã£ããªãããããã°ãããŠãšã©ãŒã®ç®æãèŠæ¥µããããã«ããŸãããã
ãšã©ãŒã®æ
å ±ã衚瀺ãããªãããã«ããŠããç°å¢ã§ãéçºããããšããããã©ããŸã§ãã©ã°ã©ã ãéã£ãŠããã®ããããããããªããšããããšããããŸãã
ç»é¢ã«ãªã«ãã®æåãåºåãããã³ãŒããæžãè¶³ããŠããã®æåã衚瀺ããããªããã³ãŒãã®ãã®äœçœ®ãŸã§ã¯ãããã°ã©ã ã®ãšã©ãŒããªãããšãããããŸãããšã©ãŒãåºãã«æžãè¶³ããã³ãŒããã¡ãããšè¡šç€ºããããªããæžãè¶³ããã³ãŒããåé€ããŠãã³ãŒãã®ããå°ãåŸãã®ãšããã«ããäžåºŠãããã°çšã®ã³ãŒããæžãè¶³ããŸãããã®ããã«ããŠãã©ããŸã§ããã°ã©ã ãèµ°ãããšãã§ããŠããã®ãã粟æ»ã§ããã®ã§ãã
ããã°ã©ã ãã³ãŒããã©ã蟿ã£ãŠããããçè§£ãã
ãªããžã§ã¯ãæåã®èšèªã§ãããããããªãã©ã°ã©ã ãéã£ãŠããããšãå€ãããããšã©ãŒãçºçããŠããŸã£ããšãã«ãã©ããã©ããªã£ãŠããã®ããããããªããšããããšãããããŸãã
ãããªãšãã«ã¯ãããã°ã©ã ãã©ããªçµè·¯ããã©ã£ãŠãã®ã³ãŒãã®äœçœ®ã«ããã®ããç¥ãããã®é¢æ°ã䜿ã£ãŠããããã°ããããšãã§ããŸããæ°ãã䜿ãã¯ãããã©ã€ãã©ãªã®äžèº«ã調ã¹ãŠã¿ãããšãããšãã«ã䜿ããŸãã
ãã®ããã«ã³ãŒãã£ã³ã°äœæ¥ããããšãã«ã¯ããããããã«æžããããã§ãããããšããæãã«ãã£ããåŸ ã£ãããããŠãèªåãæžããã³ãŒããèªåã®æã£ãéãã«ãªã£ãŠããããããŸãã«ç¢ºèªããªããé²ããŠããããã«ããŸãããã
é·å¹Žã³ãŒãã£ã³ã°ã«æºãã£ãŠãããšããããã©ã³ã§ãããããã°ãªãã§ãããããšæžãããããããã§ã¯ãããŸãããã©ããã§ãæã£ãŠãããªããããªæåããããŠããŸã£ããããããšã¯ã³ãŒãã£ã³ã°ã«ã¯ã€ããã®ãªã®ã§ãã確å®ã«å¹çããããããŠããããã«ã¯ãã©ãããŠãäžæã«ãããã°ãããªãããšãæ¬ ãããªãã®ã§ãã
PHPã®ãããã°ã®ä»æ¹
var_dumpã䜿ã
PHPã®ãããã°ã®åºæ¬ã¯var_dump颿°ã§ãããã®é¢æ°ã«ãã£ãŠã倿°ã®äžèº«ãç¥ãããšãã§ããŸããSESSIONã®äžèº«ãªã©ãé åã®å€æ°ã倿¬¡å ã«ãªã£ãŠãããããªè€éãªæ å ±ã§ããvar_dumpã§ããã«äžèº«ãåºåããŠãããŸãã
var_dumpãšããã ãã§ã倿°ãé åã§ãã£ããšããŠãããã®ããŒãšå€ã¯ãã¡ãããå€ã®åã«ã€ããŠã®æ å ±ãè¿ããŠãããã®ã§ãã
ããã«ã倿°ã®äžèº«ãèŠãããããããã«ã倿¬¡å é åã®äžèº«ãããŒãã«æ§é ã§è¡šç€ºããããšããæ¹æ³ããããŸãã
<?php
$arr = array(array(array(1,2,3,4),array(5,6,7)),8,9,10);
var_dump($arr);
debug("arr",$arr);
function debug($name, $value) {
echo "<table>";
foreach($value as $k => $v) {
echo "<tr><td>{$k}</td><td>";
if(is_array($v)) {
debug($k, $v);
} else {
echo $v;
}
echo "</td></tr>";
}
echo "</table>";
}
?>
ããã¯ãSESSION倿°ãªã©ã®ãå€éã®æ§é ã«ãªãããšãå€ã倿°ã®äžèº«ãã¹ããŒãã«ãã§ãã¯ã§ããã¡ãã£ãšããããŒã«ã§ãã
é
åã®ããŒãšå€ãåºåããã ãã®ã³ãŒãã«ãããå€ãé
åãªãã颿°èªèº«ãååž°çã«åŒã³åºããŠãå€å
ã®é
åã®ããŒãšå€ãæžãåºããããã«ãªã£ãŠãããã®ã§ããvar_dumpã ãã ãšèŠã«ãããªã£ãŠããŸããŸããããã®ãã«ããŒé¢æ°ã䜿ãã°ããã£ãšå€æ°ããã§ãã¯ãããããªããŸãã
var_dumpã䜿ããå¥ã®ã·ãã¥ãšãŒã·ã§ã³ã¯ãã©ãã§ãšã©ãŒãçºçããŠããããšããããšãã調ã¹ãªããã°ãªããªããšããç°å¢ã§ããããã°ã©ã ãéã£ãŠãããšæãããããªç®æã®ã³ãŒãã«ãvar_dumpãä»èŸŒãã§ãããŸããåŒæ°ã«ã¯ãããããéãæ°åãå ¥ãããããŠãã³ãŒããšåºåãããçµæãæ¯ã¹ãããããŠãããŸãã
var_dump(1);
//exit();
var_dump(2);
exit();
var_dumpãšexitãäžç·ã«äœ¿ã£ãŠãæžãåºããåŸã«ããã°ã©ã ãã¹ããããããŸãã
ã1ãã衚瀺ã§ãããªãã1ã®ç®æãŸã§ã¯ãããã°ã©ã ãèµ°ã£ãŠãããšããããšã§ãã
1ã®ãšããã®ãexitãåé€ããŠã2ãŸã§ããã°ã©ã ãèµ°ããã©ããã確èªããŸãã
2ã衚瀺ããããªããé ã
ã«ã©ããŸã§ããã°ã©ã ãèµ°ã£ãŠããã®ãããã§ãã¯ããŠãããŸãã
æ°åã衚瀺ãããªãvar_dumpãããã°ããã®åã«ããvar_dumpãããã®var_dumpãŸã§ã®éã«ããªãããã®ãšã©ãŒãæœãã§ãããšããããšã«ãªããŸãã
ãã®ããã«ããŠãããã°ã©ã ã®å šäœã®ãªããããã©ã®äœçœ®ã«ãããã°ãã¹ããšã©ãŒãããã®ãã調æ»ããããšãã§ããã®ã§ãã
debug_backtraceã䜿ã
æåŸã«debug_backtraceã®äœ¿ãæ¹ãã玹ä»ããŸãã
debug_backtraceã¯ãè¿ãå€ã«é£æ³é
åã®é
åãè¿ããŸãã
飿³é
åã«ã¯ãããŸããã°ã©ã ãããç®æã¯ã©ãããåŒã³åºãããã®ããšããæ
å ±ãèšé²ãããŠããŸããå€éã«é¢æ°ã®ãªãã§åŒã³åºãããŠãããããªå Žåã¯é
åã®æ°ãå€ããªããŸãã
çŸåšã®ããã°ã©ã ã®å Žæããããã°ã©ã ãã¹ã¿ãŒãããç®æãŸã§ã«ãã©ããªçµè·¯ãéã£ãŠããã«å°éããã«è³ã£ããã詳ããèªã¿åãããšãã§ããŸããåŒã³åºãããæ å ±ã®é£æ³é åã®ãªãã«ã¯ãã©ã®ãã¡ã€ã«ã®äœè¡ç®ã§ã©ããªåŒæ°ã䌎ã£ãŠåŒã³åºãããã®ããªã©ããããã°ã®åœ¹ã«ç«ã€ããããªæ å ±ãåããã®ã§ãã
Xdebugã䜿ã
Xdebugã䜿ãã°ãããç°¡åã«éçºäžã®ãããã°ãã§ããããã«ãªããŸããXdebugã¯ãPHPã®æ¡åŒµã¢ãžã¥ãŒã«ã§ãPHPãåäœãããŠãããµãŒããŒã«Xdebugãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãããŸããphp.iniã«Xdebugçšã®èšå®ãå ããå¿ èŠããããŸãã
ãµãŒããŒ
# pecl install xdebug
php.ini
zend_extension="ãµãŒããŒã®ãã¹ïŒœphp/modules/xdebug.so"
Xdebugã䜿ãã°ãvar_dumpã®çµæè¡šç€ºãããèŠããããªããŸããããããã®å€ã¯ãã«ã©ãŒè¡šç€ºã«ãªãã®ã§ãã
ãŸãã倿¬¡å
é
åã«ãªã£ãŠããéšåã¯ãã€ã³ãã³ããäžããŠè¡šç€ºãããŸãã
$arr = array('iPhone', 'Xperia', array('Nokia', 'Samsun'));
var_dump($arr);
ãŸãšã
ããã°ã©ããŒã«ãšã£ãŠãäžæã«ãããã°ããããšããã¹ãã«ã¯ãéçºãããçŽ æ©ãããªããããã«ãªãããã«å¿ é ã®èœåãšãããã§ãããããããã°åã確å®ã«èº«ã«ã€ããŠããšã©ãŒã®å°ãªãä¿¡é ŒããŠããããéçºè ãšãªãããšãã§ããŸãã












