多くのswitch文を使用する代わりに使用できますか?クラス内にたくさんのswitch文を使用する代わりに使用できますか?
私は別のページで動作するクラスを持っていますが、同じことをします。 しかし、各ページには読み込むデータが異なります。 これは私がやっている方法です(色は単なる例に過ぎず、実際に私のアプリケーションにはありません)。 コンストラクタのページをチェックして、$ this-> page変数に入れます。それから私はこのような機能を持っています。
private function loadTable(){
switch($this->page){
case "green":
$check = $this->loadGreen();
return $check;
break;
case "blue":
$check = $this->loadBlue();
return $check;
break;
case "orange":
$check = $this->loadOrange();
return $check;
break;
}
}
しかし、私はこのような何かをし、別の機能かもしれません:あなたは、私がswitch文の多くで終わるつもりです機能の多くと非常に素早く見ることができます
public function searchRecord(){
$name = trim(strip_tags($_POST['term']));
switch($this->page){
case "green":
$query = "SELECT `green_ID`,Reason FROM `green`";
break;
case "blue":
$query = "SELECT `blue_ID`,Reason FROM `blue`";
break;
case "orange":
$query = "SELECT `orange_ID`,`colour`,`hat` FROM `orange`";
break;
default:
return "";
}
//rest of code removed for sanity
}
を、これは3ページ分です。何百枚もあれば
私はすべてのケースをすべてのページに持ち、変数を設定して私が現在いるページを言うようにすると考えましたが、その変数を確認するためにスイッチが必要なので機能しません。
私は関数を呼び出すことができ、その関数が私が現在いるページによって異なることをしたいと思っていますが、私の現在のシステムは、可能ならば減らしたいswitch文をたくさん用意しています。
これを行うには良い方法がありますか? public function searchRecordGreen()
をし、PHPで動作するはずです searchRecord$color()
を経由して、それを呼び出す:
これは良い計画のようですそれがどのように機能するかを完全に理解する。したがって、各ページは異なる拡張クラスを使用し、PageFactoryはそれをページに応じて各クラスにリダイレクトしますが、抽象クラスページが何をしているのかはわかりません。多くのものが共通の機能を共有しています。共通の機能はページに入れられますか?これは、C++でクラスを拡張する方法と似ています。私はこれをテストするためのテストプロジェクトを立ち上げると思います。 –
私は抽象クラスについて読んでいます。私が理解するように、抽象クラスは別のクラスによって継承されたクラスです。どのクラスが拡張クラスだと思ったのですか?私は学ぶべきことがたくさんあると思われますが、これが最良の答えだと私は確信しています。 –
抽象クラスは一般的な概念をモデル化します。あなたの例では、 'Page'クラスはジェネリックページをモデル化します。すべてのページに共通の操作が含まれています。それは抽象的である必要はありません。たとえば、サイトの任意のページで有効な抽象関数の実装を提供できる場合(抽象宣言ではなく)これらの関数を実装し、 'abstract'キーワードをクラス宣言から削除できます。次に、 'Page'クラスをデフォルトとして使用して、異なる動作を持つページに特定の' BluePage'または 'GreenPage'を使用することができます。 – axiac