利用しているphp組み込み関数の一覧を列挙するワンライナを書いてみた

PHPの小文字から始まる関数が4405個もあってびっくりした件」という ブログを見て、
ふと、自分のコードでは標準関数をどのくらい利用しているのだろう? と思い、
調べるスクリプトを書いてみた。



php には、get_defined_functions() という関数があり、これの戻り値に組み込み関数名の一覧が含まれるので、これを標準関数と見なすことにした。
実際には、pecl ライブラリによって組み込まれた関数も含まれるので、標準関数というとやや語弊があるのだけど、まぁ気にしない。

自分の環境(php5.3.1)では、1513個だった。


で、せっかくなので、久しぶりにperl で書いてみようかと思い、perl といったら全裸イナー ワンライナー なので、意味もなくがんばってみた。


  • カレントディレクトリ以下の .php ファイルに含まれる組み込み関数の(ユニークな)一覧を出力するワンライナ
php -r 'echo join("\n",current(get_defined_functions()));'|perl -MFile::Find -e 'find(sub{if ($_ =~ /\.php$/) {open(I,"<$_");while(<I>){$f{$1}++ if(/([a-z][a-z0-9_]*)\s*\(/i)}close(I);}}, ".");@pf{map{chomp;$_}<STDIN>}=1;$,="\n";print grep{exists $pf{$_}}keys %f;'


ワンライナというには長すぎる気もするけど。

自分の作ったライブラリ(176ファイル)に対して実行してみたところ、293 個 の組み込み関数が見つかった。
組み込み関数全体の20%程度しか利用してないのかぁ。


これ、pearライブラリ全体にやってみたらどうなるんだろ。
ちょっと気になる。