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.