2011-06-20 32 views
2

私は、PHPでさまざまなタイプのフォーム入力コントロールを構築する一連のクラスを構築する初期段階にあります。ここでは、後にテキスト入力コントロールを構築します私のコードの先頭のサンプルです:あなたが見ることができるようにフォーム入力要素を構築するクラスを構築する

<?php 
class TextInput { 
//These properties are reqiured, and are defined on an as-needed basis 
    public $name; 

//These properties are optional, but can be defined on an as-needed basis 
    public $disabled = false; 
    public $maxLength = false; 
    public $readOnly = false; 
    public $size = false; 
    public $type = "text"; 

//New to HTML5 
    public $autoComplete = "off"; 
    public $autoFocus = false; 
    public $listSuggestionArray = false; 
    public $max = false; 
    public $min = false; 
    public $multiple = false; //Works for "email" type only 
    public $pattern = false; 
    public $placeHolder = false; 
    public $required = false; 

    public function __construct() { 
    //Nothing to do! 
    } 

//Build the text input control 
    public function build() { 

    } 
} 
?> 

は、このクラスでは、それは何もしていなくても、すでにかなり大きいです!私の主な質問は、これらのクラスを作成してテキストエリア、ファイル入力などを処理し続けるべきかどうかです。これらを生成するためにサーバーに負荷をかけていることを考慮すると、

賛否

  • 手動でHTMLに毎回書くとは対照的に、後でインスタンス化する非常に簡単に私の知る限りは、長所と短所があり、ここで言うことができるように

  • データベースからのデフォルト値の提供が可能になると、それは簡単になります。たとえば、このクラスは特定のフォームが更新されているときにリッスンし、以前に入力した値にデータベースから1つの追加のインスタンス変数を指定します。
  • この入力コントロールが非HTML5のクレームブラウザで実行されるたびに、HTML5入力タイプ(「色」など)にフォールバックを提供します。
  • その他のフォームの入力タイプは、オプションによって変更される可能性があります。たとえば、テキストエリアの追加のインスタンス変数は、クライアント側のJavaScriptにWYSIWYGエディタに変換するよう指示できます。

コン:サーバの負荷の

  • もう少しは単一ページに使用され、それらの多くがある場合は特に、これらの要素のためのHTMLを作成します。

これを考慮して、このルートを使用するか、手動でHTMLに書き戻す必要がありますか?

ありがとうございます。

+0

これは、http://codereview.stackexchange.com – GWW

+2

のほうがはっきりしているようです。少なくとも、いくつかの継承を使用することができます(これらの要素の大半は、例えば 'name'属性を持ちます) 。 – kapa

+0

私は同意します。コードを見直してくれてありがとう!私はちょうどそれを書いて始めた。 :)最後に、私は 'protected'基底クラスを拡張します。 –

答えて

2

入力オブジェクトを他のものと結びつけたい場合は、これは良いアプローチになると思います。同様に、検証オブジェクトが入力ヘルパーにデータを渡す検証/メッセージ応答です。これにより、フォームにユーザー機能を簡単に提供することができます。

が、ある時点でこのクラスに他の機能を組み込むことを考えていて、一部のHTMLを吐き出したいと思っていて、パフォーマンスが心配な場合は、そのまま入力してください。

あなたは何度もたくさんのことをコピーするつもり風アップしているあなたの現在の戦略と提案

password入力またはtextareaを作成する場合は、これらの同じ変数をたくさんコピーする必要があります。

代わりに、適切なタイプのHTML要素の一般的な機能やプロパティを提供するフォームジェネレータオブジェクトから拡張できるクラスを作成することもできます。明らかに、あなたがしようとしていることとそれをやろうとしていることのより大きなイメージを知らなくても、あなた自身の戦略にこれを組み込む方法を教えてもらえませんでした。

+0

チャールズに感謝します。私はそれが誰もするべきではない狂った考えではなかったことを知って安心しています。私はあなたの詳細な説明と役に立つヒントを感謝します!ポイントアップと回答が受け入れられました! –

関連する問題