Donc j'essaie d'adopter de bonnes techniques de programmation orientées objet avec PHP. La plupart (lire tout) de mes projets impliquent une base de données MySQL. Mon problème immédiat concerne le modèle d'utilisateurs que je dois développer.PHP Inheritance et MySQL
Mon projet actuel a des agents et des prospects. Les agents et les prospects sont des utilisateurs avec une grande partie de la même information. Donc, évidemment, je veux une classe Agents et une classe Leads pour étendre une classe commune Users. Maintenant, ma question est la suivante:
Comment mieux gérer le SQL pour charger ces objets? Je ne veux pas exécuter plusieurs instructions SQL lorsque j'instancie un agent ou un prospect. Cependant, la logique me dit que lorsque le constructeur Utilisateurs est déclenché, il doit exécuter une instruction SQL pour charger les informations communes entre Agents et Leads (nom d'utilisateur, mot de passe, email, informations de contact, etc.). Logic me dit aussi que lorsque le constructeur Agents ou Leads est déclenché, je veux exécuter SQL pour charger les données uniques à la classe Agents ou Leads .... Mais, encore une fois, la logique me dit aussi que c'est une mauvaise idée d'exécuter 2 Déclarations SQL chaque fois que j'ai besoin d'un agent ou d'un prospect (car il peut y en avoir des milliers).
J'ai essayé de chercher des exemples de la façon dont cela est généralement géré sans succès ... Peut-être que je suis juste à la recherche de la mauvaise chose?
J'aime vraiment cette idée, je pense. Mais ce qui me dérange le plus c'est l'endroit où exécuter le SQL pour charger toutes les données ... Je ne peux pas le mettre dans la classe User car selon le type, j'ai besoin de SQL différent. Je ne veux pas tout mettre dans la classe Agent et Lead car une grande partie du code serait la même et je veux éviter de copier et coller ... Idéalement, je voudrais que la classe User puisse charger le informations communes et les classes Agent/Lead pour charger l'information unique ...... mais alors j'exécute 2 instructions SQL chaque fois que j'instancie un agent ou un plomb, ce qui n'est pas souhaitable ..... – SpaDusA
Vous pouvez le faire dans 1 instruction SQL. Dites-moi cependant, qu'est-ce que vous utilisez pour charger un utilisateur en particulier? Qu'est-ce que vous passez? Un identifiant? Autre chose? – cletus
J'ai 2 fonctions de chargement: loadAll et loadById. Chaque responsable/agent a un prénom, nom de famille, nom d'utilisateur, mot de passe, 2 numéros de téléphone, adresse e-mail. Un chef de file a un domaine d'intérêt et un «comment avez-vous entendu parler de nous». Un agent dispose d'une zone de couverture et de quelles langues il parle. – SpaDusA