J'ai créé un site localement en PHP 5, mais j'ai rencontré quelques problèmes de conception.Problème de conception orientée objet
Actuellement, il existe trois fonctionnalités du site et chaque fonctionnalité a une classe. Ces caractéristiques sont les suivantes:
- un blog
- une liste d'amis
- un ensemble d'images
J'ai une classe pour chacun, mais je définis essentiellement dans chaque classe une méthode similaire obtient tout [blogs | Amis | images]. Je me demandais si certains d'entre vous savent comment je pourrais réduire ces classes pour qu'elles soient plus minces et probablement avoir une classe générique entre les trois fonctions pour toutes les méthodes qui sont les mêmes pour chaque fonctionnalité. (c'est-à-dire getAllById ($ feature, $ id)).
Une fonction d'exemple pour ma classe de blog existant se présente comme suit:
function getBlogsByUserId($userId) {
global $db;
$blogs = array();
$db->where(array("userId"=>$userId));
$rows = $db->get("blog")->fetch(0);
foreach($rows as $row) {
$blog = new Blog();
$blog->id = $row['id'];
$blog->userId = $row['userId'];
$blog->content = $row['content'];
$blogs[] = $blog;
}
return $blogs;
}
Note: J'ai défini ma propre classe pour les choses DB, alors ne vous inquiétez pas à ce sujet.
J'ai examiné le modèle de conception de la passerelle, mais je n'ai pas encore trouvé de solution. Je veux aussi que ce soit réutilisable, donc si j'augmente les fonctionnalités à sept ou plus alors je n'aurai pas à changer beaucoup de classe.
Merci, Matt
le seul problème que j'ai ici est que pour le truc $ item-> content = $ row ['content'], ceux-ci seront différents pour toutes les fonctionnalités, par exemple la classe image aura un nom de fichier où le blog aura du contenu . Des suggestions ici? A part ça, c'est tout bon merci! – phpNutt
@Matt: code mis à jour en réponse à votre commentaire. Notez l'ajout de la méthode setValues (). –
Merci Lucas! :-) – phpNutt