[RESOLU] Question objet : quelle stratégie ?

c0der63
Invité n'ayant pas de compte PHPfrance

05 nov. 2014, 19:13

Bonjour

je débute en objet et me pose la question suivante :

Imaginons que j'ai une classe "client" et que je crée une page de recherche dans toute ma base : est que la fonction de recherche doit être dans ma classe client ? dans une autre classe ? complètement ailleurs?

Merci de vos conseils !

ViPHP
xTG
ViPHP | 7331 Messages

05 nov. 2014, 21:02

Ta class client est quoi ? Un modèle ? Une class de gestion ?

Si c'est un modèle elle ne fait que stocker des données.
Donc ta recherche n'a rien à faire là dedans, cependant ta recherche va instancier un objet client pour chaque élément trouvé.

Si c'est une class de gestion tu peux à la rigueur faire un handler de recherche spécifique au client (fonction static) dedans qui serait appelé depuis une fonction extérieure à la class et plus générale.

c0der63
Invité n'ayant pas de compte PHPfrance

05 nov. 2014, 21:07

Merci pour ta réponse !

je ne comprend pas (encore!) tout ce dont tu parles. Je suis en phase d'apprentissage.

A ce stade j'ai créé une classe client qui me permet de créer un client en base de données (nom, adresse, etc.) ou de récupérer ces même info pour un client existant. (c'est ça que tu appelles une classe de gestion ?)

Dans ce cadre là j'hésite à mettre une fonction de recherche dans toute la base dans cette classe car "un client" (objet de ma classe) n'est pas la même chose qu' "une liste de clients".

ViPHP
ViPHP | 928 Messages

05 nov. 2014, 22:49

Ta classe Client contient tout ce qui est relatif à 1 client : nom, prénom, age, etc...
Lorsque tu fais une recherche, tu veux récupérer X clients (une collection de clients), donc tu vas récupérer un certain nombre d'objets Client.

La bonne pratique c'est d'avoir une autre classe, que tu vas appeler Clients par exemple, et qui va effectuer toutes les opérations qui concernent X clients. Donc tu aurais un code du genre :
class Client
{
   public $nom;
   public $prenom;
}

class Clients
{
   public function rechercherClients()
   {
      // Retourne un tableau avec tous les Client trouvés
   }
}

c0deur63
Invité n'ayant pas de compte PHPfrance

05 nov. 2014, 23:32

Top merci, en effet ça parait plus propre comme ça !