-1

htmlデータ ソースに応じて、表示するために作成する関数が 2 つあります。1 は からdatabase、もう 1 つは からform postです。

function buildForm_newUser($user){
     $html_username = 'Username = ' . $_POST['username'];
     $html_location = 'location = ' . $_POST['location'];
     : // similar rows follow more than 20 times 
}

function buildForm_exsitingUser($user){
     $html_username = 'Username = ' . $user->get_property('username');
     $html_location = 'location = ' . $user->get_property('location');
     :
}

たった1つの機能でこれらを達成することは可能ですか?

$userソース オブジェクト (すなわち以上)を切り替えようとしまし$_POSTたが、後者の関数は指定されたオブジェクトの関数を使用するのに対し、前者は使用しないためスタックしました。また、いずれかのオブジェクトにアクセスする必要がある行が多数あるため、新しく生成された変数 (上記の例では $html_* 変数) を1 つの場所でのみ宣言するようにしています。とは言っても、私は次のようなものが欲しいです:

function buildForm($user){ // Number and type of argument can vary

     // Do something here to specify object type

     $html_username = 'Username = ' . // following here, either $_POST or $user->get_property to get 'username'
     $html_location = 'location = ' . // following here, either $_POST or $user->get_property to get 'location'
     :
}

ありがとう。

(また、より良いタイトルの提案をいただければ幸いです...)

4

2 に答える 2

1

質問を正しく書くと、これら2つの関数は多少同じことをしているので、代わりに1つの関数が必要になります。

あなたのモチベーションは良く、あなたは改善の余地を見つけました。どうやってするか?まず、新しい3番目の方法を抽出します。

function buildForm_array($array)
{
     $html_username = 'Username = ' . $array['username'];
     $html_location = 'location = ' . $array['location'];
     ... // similar rows follow more than 20 times 

}

次に、2つの既存のメソッド内でその3番目のメソッドを使用します。

function buildForm_newUser()
{
     buildForm_array($_POST);
}

function buildForm_exsitingUser($user)
{
     $array['username'] = $user->get_property('username');
     $array['location'] = $user->get_property('location');
     ...
     buildForm_array($array);
}

実際のコードがどのように見えるかに応じて、これは異なる結果につながる可能性があります(ここの例は明らかに道の終わりではありません)。たとえば、に$user基づいてオブジェクトを作成し$_POST、それを使用して既存のを使用してフォームを生成できますbuildForm_exsitingUser($user)働き。

これは、新しい3番目の関数を使用するのと似ていますが、作成しません。したがって、パターンを見つけて、重複するコードを減らしてください。簡素化する。

これは常に進行中の作業なので、コードを動的に保ち、変更してください。

于 2012-05-16T23:48:33.143 に答える
0

この関数を何と呼んでいますか?ユーザー名とユーザーの場所をパラメーターとして受け入れることができます...

于 2012-05-16T23:48:23.957 に答える