hnwの日記

PHPの文字列まわりを調べるための拡張モジュールを作ってみた

このエントリは闇PHP Advent Calendar 2015の11日目です。


strdumperというPHP拡張モジュールを作りました。


現時点では、この拡張モジュールは下記の3つの関数を実装しています。

str_dump

void str_dump(mixed $var)


$varが文字列型だった場合に、詳細の情報を出力します。

is_interned

bool is_interned(mixed $var)


$varが文字列型かつインターン化文字列だった場合にtrueを、それ以外の場合にfalseを返します。

interned_strings

array interned_strings()


その時点での全インターン化文字列の配列を返します。

利用例

これを利用すると、例えば下記のような実験を行うことができます。

<?php
$a["foo"] = 1;
$b = key($a);
var_dump(is_interned($b)); /* PHP 5.4&5.5: false / PHP5.6: true */


このように、PHP5.5までは配列のキーはインターン化文字列にならなかったのが、PHP 5.6からは配列のキーにもインターン化文字列が使われるようになったことがわかります。


他にも面白い実験ができるかと思うので、この拡張モジュールを使って色々実験してもらえると嬉しいです。