hnwの日記

Text_VariationProducerの紹介

Text_VariationProducerというPHPのクラスを作りましたので、紹介します。


Text_VariationProducerは、指定した全組み合わせの文字列を作り出すようなイテレータです。n重ループや分岐を書く代わりに、文字列の組み合わせパターンを簡単な文法で記述するだけで、全部の組み合わせを順に得ることができます。


次のような特徴もあります。

  • SPLのIteratorインターフェースを実装しているため、foreach文で簡潔にループを記述できます。
  • 必要になってから文字列を生成し、生成した文字列を即座に破棄します。そのため、全ての組み合わせを一度に生成するよりもメモリ消費が抑えられ、組み合わせ数が多い場合(数十万から百万程度)でも現実的に動作します。
  • クラス定数で便利な文字列定義を提供しており、「1バイトから3バイトで表現される全てのUTF8の1文字」などが簡単に利用できます。


詳しくはopenpearのText_VariationProducerのページをご覧ください。僕が便利だと思うのは、下記のような実験コードが気軽に書けるようになったことです。

<?php
require_once 'Text/VariationProducer.php';

$strings = new Text_VariationProducer(Text_VariationProducer::UTF8);
foreach ($strings as $string) {
  ...
}


自分以外の人が便利に使うシチュエーションが思いつかないのですが、便利な用途を思いついた人は教えてください。