カテゴリ付き見出し。
ほげほげぼへぼへ
ReflectionClass と zend.ze1_compatibility_mode に嵌められた。
Pseudo_CodeBlockのテストケースを書こうと思い、いつまでもSimpleTestに頼ってもいられない。時代はPHP5で、PHPUnitがデフォルトになりつつある。
っつーか、Stagehand_TestRunnerを使いたいんだけどアレ、PHPUnitしか対応してないから。
http://pear.piece-framework.com/index.php?package=Stagehand_TestRunner
というわけで、PHPUnitを使おうとしてみた。
にpearコマンド経由でのインストール方法が載っていたので、それに従いインストール。
で、早速上記本家ドキュメントにも記載されているArrayTestを作成してみる。
http://www.phpunit.de/pocket_guide/3.2/en/writing-tests-for-phpunit.html
をコピペ。で、動かす。
DOS> phpunit ArrayTest >
・・・なぜ何も出力されないの 。゚(゚´Д`゚)゚。
で、必死にスクリプトを追っていったら PEAR/PHPUnit/Runner/StandardTestSuiteLoader.php の
public function load(
$suiteClassName, $suiteClassFile = '', $syntaxCheck = TRUE)
{
// ...
if (class_exists($suiteClassName, FALSE)) {
return new ReflectionClass($suiteClassName); // ←ココ!!
} else {
で、いきなりスクリプトが終了している。error_logにも何も出力せずに。
ど、どういうこと・・・??
試しに
<?php class Hoge { public function hoge() { echo "hello\n"; } } try { $r = new ReflectionClass("Hoge"); var_dump($r); } catch(Exception $e) { echo "-----------"; var_dump($e); } echo "=========="; ?>
とかやっても、やっぱり何も出力されない。
リフレクションのPHPマニュアルにも書いてないし、何なんだよぉ・・・と泣きが入りかけた。php.iniでxdebugとか入れたのが不味かったのかと思い、戻してみても症状変わらず。
ふと。
「あ、zend.ze1_compatibility_mode = On か・・・?」
ローカル環境は数日前までPHP4。で、多くをそのままで動かしたかったので、念のためこれを明示的にOnにしておいたのだ。
Offに戻したら問題なく動いたよコンチキショー!!!!!!!!ヽ(`Д´)ノ
やられた!だって上述のPHPマニュアルにも、そんなの一言も載ってないんだもん!!
うぇぇえええん・・・ひどいよぉ。何も悪い事してないのに、こんな仕打ち・・・。
まあいい。とにかくコレでPHPUnitは動き出す。さて、練習、練習・・・っと。