Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Crear clase padre o individualizar métodos.

Estas en el tema de Crear clase padre o individualizar métodos. en el foro de PHP en Foros del Web. Buenas foreros, espero todo ande bien. Mi consulta es la siguiente, como parte del aprendizaje que he tenido de PHP al fin llegué a la ...
  #1 (permalink)  
Antiguo 10/05/2014, 22:54
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 11 años, 8 meses
Puntos: 0
Sonrisa Crear clase padre o individualizar métodos.

Buenas foreros, espero todo ande bien.
Mi consulta es la siguiente, como parte del aprendizaje que he tenido de PHP al fin llegué a la OO en PHP y me he dedicado a aprender sobre ello -si recomiendan algún libro, artículo o publicación de ello, más que bueno- y llegué a un problema con la lógica de si debo crear un padre para dos clases o si debo usar los métodos -que son exactamente los mismos- para cada uno por aparte y en sus respectivas clases. Sé que la herencia es uno de los pilares útiles de la POO por lo que me queda la duda de si es necesario crear dicha clase. Ahora voy a ser más específico, tengo dos clases -hijas- que son una para ejecutar sentencias de selección y otra para hacer llamados a procedimientos, el detalle está en que la clase padre, tiene funciones que ambos usan pero no son estrictamente relacionadas con las derivadas, me refiero a esto:

Clase padre.
Código PHP:
class Arguments{
        private 
$Args = array();
        
        public function 
__construct(){
        }
        
        protected function 
AddArg($Argument){
            
// Agrego argumentos (parámetros) del procedimiento o selección.
        
}
        
        protected function 
ClearArgs(){
                       
// Elimino cadenas no útiles (coma del argumento final que provocaría un error).
        
}
        
        protected function 
ArgsToString(){
            
// Convierto arreglo a cadena.
        
}
        
        public function 
__destruct(){
        }
    } 
Clase hija de selección.
Código PHP:
class Select extends Arguments{        
        private 
$Table;
        
        public function 
__construct{
        }
        
        public function 
AddTable($Table){
            
// Se agrega la tabla de la cuál se requiere la información.
        
}
        
        public function 
ExecSelect(){
            
// Se ejecuta la llamada al procedimiento.
                        // Limpio la cadena con la clase padre.
                        // Convierto a cadena el arreglo.
        
}
        
        public function 
__destruct(){
        }
    } 
Clase hija de llamada a procedimientos.
Código PHP:
class Procedure extends Arguments{
        
// Propiedades.
        
private $SP;
        private 
$Answ = array();
        
        public function 
__construct{
        }
        
        public function 
DefStoreProcedure($StoredProcedure){
            
// Se asigna el nombre del procedimiento a utilizar.
        
}
        
        public function 
AddAnsw($Answer){
            
// Se agrega el nombre de la respuesta. Es opcional.
        
}
        
        public function 
CallProcedure(){
            
// Ejecuto la llamada.
                        // Limpio la cadena con la clase padre.
                        // Convierto a cadena el arreglo.
        
}
        
        public function 
__destruct(){
        }
    } 
En el ejemplo de acá, utilizo la herencia con el fin de utilizar la clase padre para recibir los argumentos (parámetros) en ambas clases, por ejemplo:

Código PHP:
$Proc = new Procedure();
$Proc->AddArg(Parámetro 0);
$Proc->AddArg(Parámetro 1);
[...]
$Proc->CallProcedure(); 

Si ocupan el código completo lo pongo, lo puse así únicamente para dar una idea de cómo se forma el detalle lógico que es el que me da por ahora mala espina. Siento que uso mal la herencia o que la derivación podría cambiarse.

Saludos y gracias.

Última edición por M8Raafnro; 10/05/2014 a las 23:02
  #2 (permalink)  
Antiguo 11/05/2014, 05:59
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Crear clase padre o individualizar métodos.

No lei todo aclaro pero si dices que es solo para reutilizar codigo porque no estan muy relacionadas, podrias usar Traits


Mi consejo utiliza la nomenclatura de Zend: clases empiezan con mayusculas, y camelCase para métodos:

CallProcedure() deberia ser callProcedure()
__________________
Salu2!
  #3 (permalink)  
Antiguo 11/05/2014, 12:16
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Crear clase padre o individualizar métodos.

¡Bárbaro! Tuve la respuesta en mi cara todo este tiempo y no lo vi, vaya cabeza.
¡Muchísimas gracias compañero! A la próxima será no asumir nada.
Con respecto a las nomenclaturas he visto una cantidad gigante de éstas, siento que podría utilizar la que indicas, se ve más útil realmente.
Gracias por eso también. Saludos.

Etiquetas: clase, padre, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:21.