Retroceder   Foros del Web > Programación para sitios web > PHP > PHP orientado a objetos

Respuesta
 
Herramientas Desplegado
Antiguo 09-feb-2008, 03:51   #1 (permalink)
firewind está en el buen camino
 
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Cordoba-Andalucia
Mensajes: 49
Pregunta Jerarquia de clases

Hola.

Llevo un tiempo programando unas clases y como todo empezo por aprender, pues ya han llegado a un punto donde tengo que tomar unas reglas para que no sea un caos.

El caso es que tengo la siguiente jerarquía :
- Clase SYSTEM (envia emails, genera claves y poco mas)
- Clase HTML hereda de SYSTEM (para escribir paginas HTML)
- Clase MYSQL hereda de HTML (para todo el tema de MySQL)
- Clase BROWSER hereda de MYSQL ( es un browser de mantenimiento de tablas)

El tema es que con el siguiente codigo :
Código PHP:
<?php
session_start
();
include(
"inc/seguridad.inc.php");

    
// incluimos la clase base y creamos el objeto
include('clases/jcrMtBrowser.php');

// Iniciamos el Objeto
$oPage = new jcrMtBrowser();
$oPage->Conectar();

// .... agunas cosillas que he quitado

$oPage->Inicializa();

// quitamos la ayuda
$oPage->setOpcionAyuda(false);

// solo pueder clonar el super-admin
if ($_SESSION['nNivel'] < 9) { $oPage->setOpcionClonar(false); }


// -----------------------------------------------------------------------------------------------------------------
//
// INICIO HTML    
//
// -----------------------------------------------------------------------------------------------------------------

$oPage->HtmlIni(1,false);
    
// HEAD
$oPage->HEAD($_SESSION['EMPRESA'].' - Intranet');
$oPage->CSS('templates/default/css/intranet.css');
$oPage->JS('js/stmenu.js');
$oPage->endHEAD();
    
//BODY
$oPage->BODY();
$oPage->TABLE('principal','width="100%" height="100%"  border="0" align="center" cellpadding="0" cellspacing="0"');
$oPage->TR();
$oPage->TD('valign="top"');
    
    
// cabecera
    
include("inc/cabecera.inc.php");

$oPage->TR();
$oPage->TD('valign="top" height="100%"');
        
    
// cuerpo
    
$oPage->TABLE('cuerpo','width="100%"  border="0" align="center" cellpadding="0" cellspacing="0"');
    
$oPage->TR();
    
$oPage->TD('valign="top" align="center"');
    
        
$oPage->Ejecutar('sys_tablas_mt.php?tabla='.$LocalTablaID,$LocalTablaID); 

    
$oPage->endTABLE();
        
$oPage->TR();
$oPage->TD('valign="bottom"');
        
    
// pie
    
include("inc/pie.inc.php");
        
// fin de la tabla principal
$oPage->endTABLE();

// fin del html
$oPage->endBODY();
    
//mostramos la pagina
$oPage->Show();
?>
Con este codigo tengo un mantenimiento completo, con inserciones, edicion, borrados controlados por clave, filtros, etc.

Una captura:


Mi pregunta, ¿Es correcto lo que hago, o debo crear una clase que use instancias de las otras ?

No se si me he explicado bien.
Espero opiniones

Un saludo.
firewind está desconectado   Responder Citando
Antiguo 09-feb-2008, 10:06   #2 (permalink)
Moderador
GatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy pronto
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: Queretaro, Mexico
Mensajes: 11.616
Re: Jerarquia de clases

No es lo mejor heredar todas las clases de una base, siempre busca que tus clases sean lo mas autonomas posible, y solo hereda las clases que realmente tengas que heredar.

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 10-feb-2008, 05:10   #3 (permalink)
Colaborador
enriqueplace tiene algunos puntos positivos de karma
 
Avatar de enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 579
Enviar un mensaje por Skype™ a enriqueplace
Re: Jerarquia de clases

El error que estás cometiendo es hacer herencia por el simple reuso de código, cuando la herencia es algo más que eso. Por regla debe haber una relación de parentesco entre las clases... por ejemplo, aunque parezca que te sirve, una clase Perro no puede heredar de una clase Persona.

Busca sobre "el principio de liskov" para ver si te aclara un poco más el panorama.

Otra sugerencia, usa estándares de codificación, no inventes los tuyos. Busca en Zend.com que tienen una presentación que describen cual usan ellos internamente.
__________________
Saludos, Enrique Place

Blogs: Enrique Place y PHPSenior.
enriqueplace está desconectado   Responder Citando
Antiguo 10-feb-2008, 12:55   #4 (permalink)
firewind está en el buen camino
 
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Cordoba-Andalucia
Mensajes: 49
Re: Jerarquia de clases

Gracias a los 2 por vuestros consejos.
A GatorV, tengo que "matarlo" , ya que lei su blog y el cerebro me empezo a estallar diciendo "que haces prehistorico", asi que de entrada veia MUCHOS inconvenientes en las 3 capas (mas aun con mi sistema que me hago una intranet en una mañana), pero luego pensado lo vi del todo claro, los problemas y soluciones que he adoptado no son nada elegantes/eficientes ya que llegado el punto en el que intentar "crecer" en prestaciones me suponia un suplicio.
Asi que tire a hojear la documentacion de los frameworks que hay en la seccion del foro y como soy muy burrro y me gusta hacerlo todo yo solito, me he decido (despues de varias horas) por el Zend Framework, ya que me permite hacer las cosas a mi manera.

A enriqueplace, darle la razon al 100%, mi sistema esta creado como prueba y ha ido creciendo a base de ratos que se me ocurria ponerle tal o cual cosa y claro es pura pereza de empezar de 0, asi que sacrifique todo por la reutilizacion del codigo. Sobre la codificacion, pues yo empeze con DBase III, despues Clipper, CA Visual Objects, Delphi, ASP y por ultimo PHP, asi que suelo llamar a las funciones en español y usar la "notacion hungara" en las variables (es que soy muy viejo..jejeje).

Despues de lo visto hoy, pues esta claro, a estudiar el Zend Frameworks y a cojer mi entorno UML ( Un Monton de hojas y un Lapiz ) y rediseñar como es debido mis clases.

Como pregunta, usais Diccionario de Datos en los proyectos? osea, tener la informacion de la base de datos en tablas y luego usarlas en las clases? Es que necesito MAS informacion, estoy sediento de ella

Un saludo y gracias de nuevo
firewind está desconectado   Responder Citando
Antiguo 11-feb-2008, 07:57   #5 (permalink)
Moderador
GatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy pronto
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: Queretaro, Mexico
Mensajes: 11.616
Re: Jerarquia de clases

A que te refieres con ¿Diccionario de Datos?, no es necesario en todos tus proyectos usar una base de datos, bien puedes usar algún otro medio persistente.

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 11-feb-2008, 13:02   #6 (permalink)
firewind está en el buen camino
 
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Cordoba-Andalucia
Mensajes: 49
Re: Jerarquia de clases

GatorV, tienes toda la razon, pero claro he estado tirando de mi metodologia de los tiempos Clipper, he visto que con http://framework.zend.com/manual/en/...pters.xml.html no es necesario guardar la logica de mis clases de la base de datos en ella, sino usando ficheros externos.
Me estoy planteando crear un blog donde ir poniendo mis avances para que la gente como yo tenga un sitio donde encontrar y compartir ideas, ya me pasare por el tuyo para darte "caña" con mis preguntas.
Un saludo.
firewind está desconectado   Responder Citando
Antiguo 11-feb-2008, 14:34   #7 (permalink)
firewind está en el buen camino
 
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Cordoba-Andalucia
Mensajes: 49
Re: Jerarquia de clases

Para enriqueplace , en tu blog http://phpsenior.blogspot.com/2007/1...ncipio-de.html con el ejemplo del becario me has aclarado alguna dudillas que tenia en la estructura del nuevo sistema que estoy desarrollando. Gracias
Un saludo.
firewind está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 03:29.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93