Je pense qu'il serait préférable de créer une classe parente ou un modèle pour tous ces autres objets ou enfants à suivre ou à hériter. Par exemple, disons que vous voulez obtenir ou définir des données dans un objet particulier. Si les noms des champs de données sont différents, vous rencontrerez des problèmes.
Disons que vous avez un objet appelé GoogleSearch
et un objet appelé YahooSearch
. Si la requête saisie par l'utilisateur dans GoogleSearch
peut être récupérée par la méthode $google->getQuery()
et que la requête YahooSearch doit être récupérée en utilisant $yahoo->getInput()
alors évidemment vous rencontrerez des problèmes à moins que vous ne vouliez spécifier manuellement des informations comme cela quand elles se présentent. Cependant, si vous pensez à des choses comme celle-ci avant de développer le framework, il devient beaucoup plus facile d'automatiser tout. Dans ce cas, il est prudent de dire que si vous construisez une collection de données à partir de recherches d'utilisateurs, toutes les recherches partageront certains attributs. Par exemple, - quel moteur de recherche utilisaient-ils? - Quelle était la requête entrée? - Quand la recherche a-t-elle eu lieu? - de quelle ip? - L'utilisateur a-t-il sélectionné l'un des résultats? - L'utilisateur at-il effectué une recherche sur un ordinateur, un appareil mobile, un autre? Compte tenu de ces considérations minimales, nous pourrions concevoir un système intégrant tous ces attributs. Par exemple, cela pourrait être votre classe parent:
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
}
}
alors vous pourriez hériter de cette classe pour créer des types de recherche spécifiques comme ceci:
class GoogleSearch extends Search {
function __construct() {
// set the engine to Google
$this->engine = 'Google';
}
}
Quelques autres choses à considérer pourrait être la portée ou la visibilité des variables. Ici, je les ai déclarés comme protected
ce qui signifie essentiellement qu'ils sont privés, mais peuvent être accessibles par des enfants ou des classes d'extension. J'espère que cela aidera, si vous avez d'autres questions ou que je n'ai pas compris le vôtre, s'il vous plaît faites le moi savoir et je vais essayer d'aider.
Ma pensée générale sur la programmation orientée objet n'est pas d'utiliser des objets si cela n'est pas nécessaire. Vous devriez avoir le problème et penser à la solution, ne pas changer votre problème de sorte qu'il s'adapte à une méthode particulière de résolution. – Voitcus