📚

FakerPHPのregexify関数の実装を読んでみる

2023/02/09に公開約700字

偶然、fakerphpなるライブラリを知った。
今まで知らなかったのは、ラウンダムデータを使うタイプのテストはやらなかったため。
紹介してるページで最古はこのあたりか。

https://qiita.com/zaburo/items/4487b23543ce88ce7f0c

非常に気になったのが、regexifyという関数。
正規表現を受け付けて、それに合致する文字列を返すらしい。

まさか総当たりループとかしてないよな?とソースを眺めたらそんなことはなかった。
詳しくは下記のソースの通りなのだが。

https://github.com/FakerPHP/Faker/blob/main/src/Faker/Provider/Base.php#L493-L554

既知の正規表現パターンから、preg_replace_callback 該当する生成関数を呼んでるだけだった。

実は regexify 内部関数からも呼ばれており、生成パターンの指定方法を汎用化しようとした名残だと思われる。

https://github.com/FakerPHP/Faker/blob/main/src/Faker/Provider/Payment.php#L308-L311

regexify は v1.21.0 で追加されたことがわかる。

https://github.com/FakerPHP/Faker/commit/430c066f7797328afe292dabde608f1b784a1ab6

ちなみに v1.21.0 のタグにはそんな記述はなかった....

https://github.com/FakerPHP/Faker/releases/tag/v1.21.0

Discussion

ログインするとコメントできます