tohokuaikiのチラシの裏

技術的ネタとか。

XOOPSCubeのdebugについて

XOOPS Cubeでechoとかvar_dumpができない | Suinasia

XCLではテンプレートがあるモジュールではechoやvar_dumpなどができないようです。var_dumpはデバッグでよく使うので、使えないとかなり不便です。

IDE使ってると、ブレークポイント&ステップ実行で気にならないのかもしれません。


・・・・といいつつ、それは私も最近VisualStudioで「こんな便利なものが!!」と思ったので、PHP書く時には使ってません。VS.PHP使えば良いって話ですが。


なので、XOOPSCube Legacyのdebugには、昔ながらのvar_dump();にexit();を組み合わせています。もっというと、全然流れが分からなくなった時は

<?php
exit(__FILE__.__LINE__);

をそこかしこに埋め込んでブレークポイント代わりにします。ほんと、実に不便です。


これがあまりにも不便だと、ファイルに出力するようにします。mainfile.phpで$fp = fopen(...);してグローバル変数ファイルポインタ$fpを作って、至る所に

<?php
fputs($GLOBALS['fp'], sprintf('%s [%s: %d] ......', date("Y-m-d H:i:s"), __FLIE__, __LINE__));

を埋め込みます。

で、shellからtail -f でこのファイルを閲覧しつつブラウザチェックします。

カッコワルいと思います。


本当は、ロガークラスを作って、このファイルを見るべきだと思います。

みんな、ロガークラス欲しいよね。xoopsLoggerはいやだよね。