モンキーパッチという言葉をご存知でしょうか?
プログラミング言語により若干意味は異なるようですが、一般的には元のソースコードは書き換えずに、実行時にそのコードを拡張してしまうという手法のことです。
過去にはゲリラパッチと呼ばれていた時代もあり、言語のルールを超えたり、あるいはフレームワーク・ライブラリを制作者の意図に反する動きをさせることが出来たりと正真正銘の闇の技術です。
PHPにおいては、せいぜいrunkitといったC言語レベルでの拡張によって実現ができるくらいなので、PHPはモンキーパッチしづらい言語であると言えるかと思います。
ですがC言語レベルの拡張を使わずともStreamWrapperというマイナーな言語組み込みの機能を使うことにより・・・実は可能です。
PHPファイルに書かれたソースコードがincludeされる直前に、そのコードを書き換えてしまうなんていうとんでもないことが可能なのです。
これを使うことにより、本当に色々なことが出来ます。
今回はそんな闇の技術の裏側の実装のお話や、実際に皆様がすぐお使いいただけるライブラリを作ってしまったのでご紹介させていただければと思います。