これらの他のすべてのオブジェクトまたは子が従うか継承するための親クラスまたはパターンを作成するのが最善だと思います。たとえば、特定のオブジェクトのデータを取得または設定したいとします。データ フィールド名が異なる場合、問題が発生します。
というオブジェクトとGoogleSearch
というオブジェクトがあるとしますYahooSearch
。ユーザーが入力したクエリをメソッドGoogleSearch
で取得でき$google->getQuery()
、YahooSearch クエリを を使用して取得する$yahoo->getInput()
必要がある場合、このような情報が発生するたびに手動で指定しない限り、問題が発生することは明らかです。
しかし、フレームワークを開発する前にこのようなことを考えておくと、すべてを自動化することがはるかに簡単になります。この場合、ユーザー検索からデータのコレクションを構築している場合、すべての検索でいくつかの属性が共有されると言っても過言ではありません。
たとえば、 - 彼らはどの検索エンジンを使用しましたか? - 入力されたクエリは何ですか? - 検索はいつ行われましたか? - どのIPから?- ユーザーは結果の 1 つを選択しましたか? - ユーザーはパソコン、携帯端末、その他で検索しましたか?
これらの最小限の考慮事項があれば、これらすべての属性を組み込むシステムを設計できます。たとえば、これは親クラスである可能性があります。
class Search {
protected $engine, $query, $when, $who, $browserType;
function __construct() {
$this->when = time();
$this->browserType = $_SERVER['HTTP_USER_AGENT'];
$this->who = $_SERVER['REMOTE_ADDR'];
// some more class methods
}
}
次に、このクラスから継承して、次のような特定の検索タイプを作成できます。
class GoogleSearch extends Search {
function __construct() {
// set the engine to Google
$this->engine = 'Google';
}
}
考慮すべきその他の事項は、変数のスコープまたは可視性です。protected
ここでは、基本的にプライベートであるが、子クラスまたは拡張クラスからアクセスできることを意味するように宣言しました。これがお役に立てば幸いです。他にご不明な点がございましたら、お気軽にお問い合わせください。できる限りお手伝いさせていただきます。