最近、HTML 要素を作成するためのクラスを作成しました。既存の HTML 要素と属性ごとにわざわざメソッドを作成する代わりに、魔法のメソッド __get と __call を使用することにしました。したがって、私のコードでは、基本的にこれを行うことができます:
$signUpForm->insert->input->type('text')->name('firstName')->maxlength(100)->disabled
$signUpForm->insert->input->type('email')->name('emailAddress')->maxlength(100)
等
しかし、この「魔法」をシンプルに保つことにしたので、次のようにすることもできます。
$signUpForm->insert->magic->trick('rabbit')->accessory('hat')
結果は次のようになります。
<magic trick='rabbit' accessory='hat'>
私の意見では、多くの定型コードを削減し、必要なことを正確に実行するため、これはすべて良いことです。クラスで HTML 標準を強制するのではなく、HTML の使用方法を知っていれば、HTML を容易にするクラスが必要です (正直なところ、これを行うコードは非常に小さいです)。
私の質問は、このクラスが未定義のプロパティまたはメソッドを受け入れることができることを考えると、PHPDoc でこの動作を指定する方法はありますか? 私は運なしで次のことを試しました:
/**
* @property HtmlElementAttribute * Insert a new HTML element attribute
* @method HtmlElementAttribute * Insert a new HTML element attribute
*/
これが単なるPHPStormの問題かどうかはわかりませんが、同様のシナリオはどこにも見つかりませんでした...
また、なぜ私がそのようなことをするのか疑問に思われているかもしれませんが、PHP コードの特定の HTML の側面 (フォームで宣言された ID、フォーム内の要素など) を追跡するためです。これにより、HTML をエンド ユーザーに送信する前に HTML を表示できます。