【CakePHP】外部プログラムでコンポーネントを共有したい場合

たまたま仕事でメールフォームを設置しなければならなくなって、お手軽にQdmailなんかを拝借させてもらったのですが(感謝です)。その際になかなか素晴らしいアイデアを発見しました。

Qdmailはコンポーネントでも素のクラスとしても使うことが出来るのですが、その仕組みが面白くて、Cakeかどうかの判定で「CAKE」もしくは「CAKE_CORE_INCLUDE_PATH」がdefinedされているか調べ、ある場合はObjectをextendした空のクラスを、そうでない場合はなにもextendしていない空のクラスを定義し、実体の方はこの空のクラスをextendしていました。種明かしされれば「なぁ~んだ!」ですが、頭の固い私にはそのアイデアは出てこなかったです(^^;。

ちょうど、「連想くん」のハイブリッド化を検討していて、コンポーネントをそのまま使いたいと思っていたので、このやり方を早速採用してみたいと思います。

ちなみに、Cakeでない場合に「空のObjectクラスを定義してextendする」の方が手順が少ないですが、ほかのシステムでObjectが出てきたらアウトだから、こういう実装方法になっているんでしょうね。公開用のプログラムならアウトですが、自分で分かっていてやるのならこれでもアリですね。