Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

PHP_CompatInfoのデフォルトRenderer

比較的どうでもいいネタ。
先日PHP_DocBlockGeneratorを弄ってて気づいたんですが、PHP_CompatInfo-1.8.0β2(古)から、デフォルトRendererがPHP_CompatInfo_Renderer_Arrayになった模様。


Beta 2 include 3 renderers :

  • "Null" that consumes all output. Usefull for batch mode
  • "Array" the default. That dump results as a PHP array (like previous versions)

but allow also to print improved array with help of PEAR::Var_Dump if available.

で、これで何が困る(気に入らない)かというと、

しているパッケージは、

array (
  'ignored_files' =>
  array (
  ),
  'ignored_functions' =>
  array (
  ),
  'ignored_extensions' =>
  array (
  ),
  'ignored_constants' =>
  array (
  ),
  'max_version' => '',
  'version' => '5.0.0',
  'extensions' =>
  array (
  ),
  'constants' =>
  array (
    0 => 'PHP_EOL',
  ),
  'tokens' =>
  array (
    0 => 'public',
  ),
  'cond_code' =>
  array (
    0 => 0,
  ),
)

のような出力が勝手にされちゃいます。PHP_DocBlockGeneratorは上の条件に合致していて、その結果、

$ docblockgen /path/to/sample.php /path/to/commented.php
array (
  'ignored_files' =>
  array (
  ),
  'ignored_functions' =>
  array (
  ),
  'ignored_extensions' =>
  array (
  ),
  'ignored_constants' =>
  array (
  ),
  'max_version' => '',
  'version' => '5.0.0',
  'extensions' =>
  array (
  ),
  'constants' =>
  array (
    0 => 'PHP_EOL',
  ),
  'tokens' =>
  array (
    0 => 'public',
  ),
  'cond_code' =>
  array (
    0 => 0,
  ),
)$ 

な感じ。まあ、

<?php
$info = new PHP_CompatInfo('null');

のようにインスタンス化すれば、メッセージは表示されなくなるようですが。。。うー。何でデフォルトRendererがPHP_CompatInfo_Renderer_Nullじゃないんだ?デフォルトでprint_r風な出力をして意味あるんかな?