2011-02-04 12 views
1

たとえば、新しいPHPクラスを作成するとします。フォームの構築を簡単にするために(はい、そこにいくつかあることは分かっていますが)私はクラスについても学びたいと思っています。我慢して - 感謝...フォームビルダークラスでさまざまなメソッドを作成するにはどうすればよいですか?

OK、私はここに}

class newform {クラスの詳細はこちらを}

コンストラクト機能に

public function __construct() {機能を追加し、通常の方法で新しいクラスを作成します

通常の方法で再びそのクラスを呼び出すことができます

$newform = new newform();

これまでのところ(私にとってはとにかく)。

今、私はここに}

や関数の内部で引数「を経由」でそう

public function __construct($args) {関数のように機能するためにいくつかの引数を追加することができます - 私の場合はそう、このように書かれた配列であります

$newform = new newform($args = array('arg1'=>'arg1 val','arg2'=>'arg2 val'));

私はすべてのことを行うことができますが、どのように私は私がここで意味することは、私はすべての入力のための新しいクラスを宣言する必要があり、現時点である「さらに機能を追加」します。つまり、

$newform = new newform($args = array('arg1'=>'arg1 val','arg2'=>'arg2 val')); 
$newform->textarea; 

$newform = new newform($args = array('arg1'=>'arg1 val','arg2'=>'arg2 val')); 
$newform->textinput; 

これは、私にとって「非常に」長く巻き込まれているように見えます。あなたは私が何を意味するかTEXTAREAとのTextInputをビット、このようなクラスで作成された(ただし、引数なし)されている。このような何か(私が知っている構文はwromgある)$this->textarea = '<textarea></textarea>';

$newform = new newform(); 
$newform->textarea($args); 
$newform->textinput($args); 
$newform->textarea($args); 

を行うのですが何であるどのように

あなたは最初にクラス($newform = new newform();)を宣言し、クラス内の項目に$ argsを渡すことができるように、あなたは上記のような何かをすることができるように、クラスに入れますか?

希望私は自分自身を説明しています。

答えて

3

パラメータ配列の引数は個々のフォーム要素に関連しており、パラメータをクラスコンストラクタに渡す代わりに新しい関数に移動します。これと同様に:あなたのテンプレートで次に

class newform { 
    public function __construct() { } 
    public function make_textarea(array $args) { 
     /* do stuff here */ 
     return $formatted_textarea; // a string like '<textarea></textarea>' 
    } 
    public function make_input(array $args) { 
     /* do stuff here */ 
     return $formatted_input; // a string like '<input />' 
    } 
} 

$form = new newForm; 
echo $form->make_textarea(array('arg1' => 'val1', 'arg2' => 'val2')); 
echo $form->make_input(array('arg1' => 'val3', 'arg2' => 'val4')); 

注:メソッドを呼び出すときに、私は($args = array('arg1'=>をやっていませんよ。変数に配列を代入する必要はありません。

注:配列type hintingmake_textarea(array $args)に注目してください。それは、配列がメソッドに渡されることを確認するためだけにあります。他の何かがメソッドに渡された場合(例えば、文字列)、致命的なエラーがスローされます。

アップデート - プライベートメソッドを使用する方法

class Example { 
    public function do_something(array $args) { 
     $result = $this->private_method($args); 
     return $result; 
    } 
    private function private_method(array $args) { 
     /* do stuff here */ 
     return $formatted_args; 
    } 
} 
+0

「が取得」 - 私のことはある - とはい「私はOPは、クラスメソッドは、一般的にはどのように機能するかを完全に理解しようとしていると思います」。私が "argsを扱う"プライベート関数を作成し、それらから単純な文字列を生成すると、私はそれをOKにします。私はそれが自動的に "それを行う"と思ったが、私はエラーが出る。 egprivate function inputargs($ args){}はargをループしてvarを生成します。 $ inputdata。私は(今)新しい関数を持っています。public function textarea($ args){inputargs($ args); $ this-> textarea =