Así que estoy tratando de adoptar buenas técnicas de programación orientadas a objetos con PHP. La mayoría (leer todos) de mis proyectos involucran una base de datos MySQL. Mi problema inmediato trata del modelo de usuarios que necesito desarrollar.PHP Herencia y MySQL
Mi proyecto actual tiene agentes y clientes potenciales. Tanto los agentes como los clientes potenciales son usuarios con mucha de la misma información. Entonces, obviamente, quiero una clase Agents y una clase Leads para extender una clase común Usuarios. Ahora, mi pregunta es la siguiente:
¿Cómo se debe manejar el SQL para cargar estos objetos? No quiero ejecutar varias declaraciones SQL cuando instancia un agente o un cliente potencial. Sin embargo, la lógica me dice que cuando el constructor de Usuarios se dispara, debe ejecutar una declaración SQL para cargar la información común entre Agentes y Clientes potenciales (nombre de usuario, contraseña, correo electrónico, información de contacto, etc.). La lógica también me dice que cuando se activa el constructor Agentes o Leads, quiero ejecutar SQL para cargar los datos exclusivos de la clase Agents o Leads .... Pero, de nuevo, la lógica también me dice que es una mala idea ejecutar 2 Declaraciones de SQL cada vez que necesito un agente o cliente potencial (ya que puede haber miles de cada uno).
He intentado buscar ejemplos de cómo esto se maneja generalmente sin éxito ... ¿Tal vez estoy buscando algo equivocado?
Me gusta mucho esta idea, creo. Pero lo que más me molesta es dónde ejecutar el SQL para cargar todos los datos ... No puedo ponerlo en la clase User porque dependiendo del tipo, necesitaré SQL diferente. No quiero poner todo en la clase Agente y Plomo porque gran parte del código sería el mismo y quiero evitar copiar y pegar ... Idealmente, me gustaría que la clase de Usuario pueda cargar el información común y las clases Agente/Cliente potencial para cargar la información única ... pero luego estoy ejecutando 2 instrucciones SQL cada vez que instancia un Agente o Cliente potencial, lo cual es indeseable ... – SpaDusA
Puede hacerlo en 1 declaración SQL. Dime, ¿qué estás usando para cargar un usuario en particular? ¿Qué pasas? Una identificación? ¿Algo más? – cletus
Tengo 2 funciones de carga: loadAll y loadById. Cada líder/agente tiene un nombre, apellido, nombre de usuario, contraseña, 2 números de teléfono, dirección de correo electrónico. Un líder tiene un área de interés y un '¿cómo se enteró de nosotros?' Un agente tiene un área de cobertura y qué idiomas hablan. – SpaDusA