私はそれをさらに抽象化します。一般的なSQLステートメントを含まない、取得しようとしているデータを取得するパブリックメソッドを作成します。
だからおそらくretrieveAccounts
方法。それは無視するためにアカウントの配列を必要とします。
メソッド内で、無視されたアカウントを追加できます。
申し訳ありませんが、明確にするために、現在の設定でOOPのすべての利点が得られるとは限りません(以下の例でも同様ですが、方向性に役立つことを願っています)
おそらくあなたのアプリはAccountManager
class AccountManager {
public $retrieveAccounts($startDate, $endDate, $ignoredAccounts = array()) {
return "SELECT COUNT(?) FROM ? WHERE removed != 1 AND accountid NOT IN $ignoreaccounts AND ? BETWEEN $dateAfter AND $dateBefore";
}
$am = new AccountManager();
$accounts = $am->retrieveAccounts($startDate, $endDate);
たぶんあなたのAccountManagerクラスにもaddAcount
メソッドが必要ですか?知らない。たとえその人があなたであっても、あなたのクラスの「消費者」がいるという観点から考えるのは良い習慣だと思います。消費者は、あなたがどのようにあなたのアカウント情報を取得しているかを知る必要はありません。彼らはそれができる必要があるだけです。そして、私が言ったように、これは必ずしもそれを行う方法ではありませんが、より強力な抽象化です。
したがって、上記の私の提案では、何らかの理由でファイル、postgres、またはmongodbからアカウント番号を取得したい場合はどうでしょうか。このクラスを使用してプログラムを作成できます。アカウントを取得する場所を変更する必要がある場合は、AccountManagerで作成し、プログラムを変更する必要はまったくありません。