Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Cómo hacer una Web con POO?

Estas en el tema de Cómo hacer una Web con POO? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, como novato que soy en POO estoy intentando aprender. a ver si me pueden guiar que me he trabado. mi sitio básico hasta el ...
  #1 (permalink)  
Antiguo 16/08/2007, 10:29
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 5 meses
Puntos: 2
Cómo hacer una Web con POO?

Hola, como novato que soy en POO estoy intentando aprender.

a ver si me pueden guiar que me he trabado.

mi sitio básico hasta el momento se compone de 3 archivos:

class.mysql.php
Código PHP:
<?

class mysql
{
    private 
$base$servidor$usuario$clave;
    private 
$enlace null;
    
    public function 
__construct($base$servidor 'localhost'$usuario 'root'$clave '')
    {
        
$this->servidor $servidor;
        
$this->usuario $usuario;
        
$this->clave $clave;
        
$this->base $base;
        
        
$this->conectar();
    }
    
    private function 
conectar()
    {
        
$this->enlace mysql_connect($this->servidor$this->usuario$this->clavenew_link);
        
mysql_select_db($this->base$this->enlace);
    }
    
    public function 
consultar($sql)
    {
        
$rs = @mysql_query($sql$this->enlace);
        if (
$rs)
        {
            while (
$tmp mysql_fetch_assoc($rs))
            {
                
$registros[] = $tmp;
            }
            return 
$registros;
        }
        echo 
mysql_error();
        return 
false;
    }
    
    public function 
ejecutar($sql)
    {
        if (
mysql_query($sql$this->enlace))
        {
            return 
true;
        }
        echo 
mysql_error();
        return 
false;
    }
    
}

?>
class.pagina.php
Código PHP:
<?

class pagina
{
    private 
$ruta;
    private 
$titulo;
    private 
$contenido;
    
    public function 
__construct($ruta ''$titulo 'Nueva Página :: ')
    {
        
$this->ruta $ruta;
        
$this->titulo $titulo;
    }
    
    private function 
concatenarTitulo($titulo)
    {
        
$this->titulo .= $titulo;
    }

    public function 
mostrarRuta()
    {
        return 
$this->ruta;
    }
    
    public function 
mostrarTitulo()
    {
        return 
$this->titulo;
    }
    
    public function 
mostrarContenido()
    {
        return 
$this->contenido;
    }

    public function 
agregarContenido($contenido)
    {
        
$this->contenido .= $contenido;
    }
    
}

?>
index.php
Código PHP:
<?
require('class.mysql.php');
require(
'class.pagina.php');

//$pagina = new pagina('/latinhardware.v3/public_html/');

include('plantilla.php');
?>
Ahora bien... mi idea de sitio es la de hacer una plantilla en php con el diseño en donde se haga un echo del titulo, y un echo del contenido (se podría ampliar para el echo de metadata adicional, etc)

pués bien, tal y como está la clase pagina se le puede asignar contenido estático..

ahora yo quiero heredar la clase pagina y la clase mysql en una nueva clase para poder, dentro de la pagina que cree, darle contenido mediante consultas mysql.

cómo puedo hacer?

o mejor aún, si en mi diseño tengo bloques de código generado dinámicamente como puede ser una encuesta o una lista de los 10 temas más visitados... cómo puedo crear una clase para esos bloques?

me dan una mano?

espero se entienda y chas gracias!
  #2 (permalink)  
Antiguo 16/08/2007, 10:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Cómo hacer una Web con POO?

Lo que tendrias que hacer es heredar/modificiar la clase pagina y hacer una clase que USE la clase MySQL donde tu le des una consulta y te ponga la salida en una parte de tu pagina, ahora tu clase pagina debe de ser a mi parecer un poco mas poderosa para que sepas en que parte va el contenido y donde cargar el menu etc.

Saludos.
  #3 (permalink)  
Antiguo 16/08/2007, 12:00
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: Cómo hacer una Web con POO?

Gator, no te entiendo bien, me darías un mini ejemplo, así con archivos o clases??

pd: la plantilla.php tiene, por ahora esto (es temporal)

Código PHP:
<head>
   <title><? echo $titulo?></title>
</head>
<body>
  <div id="header"></div>
  <div id="contenido"><? echo $contenido?></div>
  <div id="pie"></div>
</body>
la idea es, tras terminar de generar el objeto página, pasar un método que carge los datos del objeto en $titulo y $contenido y luego hacer un include de la plantilla.

más allá de que sea bueno o no, o que le falten métodos a la página, como ya dije, para poner los metadatas, el css y más...

lo pongo bien básico para no mezclar las cosas....
  #4 (permalink)  
Antiguo 16/08/2007, 12:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Cómo hacer una Web con POO?

Lo que puedes hacer es agregar un metodo a tu clase pagina que se llame render que haga algo asi:
Código PHP:
public function render($plantila) {
      
$datos = array(
             
"titulo" => $this->getTitulo(),
             
"contenido" => $this->getContenido()
      );

      
ob_start();
      
extract$datos );
      include( 
$plantilla );
      
$planilla ob_get_clean();

      return 
$planilla;

Con ese metodo ya podrias incluir el codigo y ya solo tendrias que hacer un:

Código PHP:
echo $pagina->render'/path/a/tu/planilla.php' ); 
Saludos.
  #5 (permalink)  
Antiguo 16/08/2007, 14:23
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: Cómo hacer una Web con POO?

interesante, el tema es que no sé cómo crear una conexión mysql desde dentro de la clase página... y que mysql herede a página o viceversa no me parece... alguna idea?

o lo uso como dos elementos diferentes?
  #6 (permalink)  
Antiguo 16/08/2007, 14:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Cómo hacer una Web con POO?

Puedes hacerlo asi:
Código PHP:
class BlogPosts extends Pagina {
       public function 
listaBlog() {
             
$db = new MySQL();
             
$posts $db->Consultar"SELECT..." );

             return 
$this->render'/plantillas/blog.php', array( "posts" => $posts ) );
       }

y adaptar tu clase de pagina asi:
Código PHP:
public function render($plantila$tempData) {
      
$datos = array(
             
"titulo" => $this->getTitulo(),
             
"contenido" => $this->getContenido()
      );

      
$datos array_merge$datos$tempData );

      
ob_start();
      
extract$datos );
      include( 
$plantilla );
      
$planilla ob_get_clean();

      return 
$planilla;

Y en tu planilla puedes hacer algo asi:
Código PHP:
<div class="posts">
      <?php foreach( $posts as $post ) { ?>
            <div class="post">
            <?php echo $post['name']; ?> <br />
            <?php echo $post['contenido']; ?>
            </div>
      <?php ?>
</div>
Saludos.
  #7 (permalink)  
Antiguo 28/08/2007, 10:47
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: Cómo hacer una Web con POO?

Chicos Gracias por sus aportes... pero acabo de terminar de leer el libro "Programación orientada a Ojetos" de Carlos Fontela (Editorial: Nueva Librería) y quedé peor que antes con respecto a los objetos en PHP.

Qué me recomiendad leer o un tutorial bien básico o algo... pq incluso hago cosas pero no me convencen del todo.. graicas
  #8 (permalink)  
Antiguo 28/08/2007, 13:29
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
Re: Cómo hacer una Web con POO?

Cita:
Iniciado por nachopro Ver Mensaje
Chicos Gracias por sus aportes... pero acabo de terminar de leer el libro "Programación orientada a Ojetos" de Carlos Fontela (Editorial: Nueva Librería)
nachopro: cuanto te salio el libro ese y donde lo compraste?

perdón por distorsionar el tema, pero estoy en busca de un buen libro de poo
  #9 (permalink)  
Antiguo 28/08/2007, 13:33
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: Cómo hacer una Web con POO?

no hay problema destor, lo compré en Argentina (soy de acá :P)

en la librerías Cúspide, en realidad me lo regaló mi novia... pero creo que le salió 36 pesos (argentinos)

A decir verdad el libro es muy bueno. Afiancé conocimientos y aprendí nuevas cosas.
Todo esto en el marco teórico y con implementaciones en Java, Object Pascal y C++.

Pero bueno, algunas cosas no me quedan muy claras en cuanto a PHP o a cómo implementar mi forma de trabajar, procedimental/modular, en POO :(

Es cuestión de leer, digerir y recién ahí "Objetear" :P jeje ;)
  #10 (permalink)  
Antiguo 28/08/2007, 23:51
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: Cómo hacer una Web con POO?

Bueno... estoy retomando el tema...

Gator:

Para atacar una página tengo que enfocar el problema desde la própia página (inicio, novedades, noticias, contacto, biografía)

o tengo que enfocar desde lo que se va a mostrar en dicha página (novedades, noticias, formulario de contaco, texto de la biografía)

es decir, creo un objeto página que tenga a su vez objetos del tipo "header" "menu" "menú latera" "contenido central" "pie de página"

o me centro de el objeto noticia, creo una colección del mismo y hago que se renderize en una página?

te juro que me cuesta horrores tratar de entender.. pero creo que mi problema ahora es el punto de partida
  #11 (permalink)  
Antiguo 29/08/2007, 07:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Cómo hacer una Web con POO?

Esque todo depende de como lo quieras atacar, si ya tienes tu clase base "Pagina" entonces te recomiendo hacer un objeto por pagina.

Saludos.
  #12 (permalink)  
Antiguo 29/08/2007, 10:04
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: Cómo hacer una Web con POO?

a ver gator si te parece coherente, vos que sabés al respecto :)

ataco desde el punto de vista de la clase página (un objeto para cada página).

ahora bien, a página le asigno atributo de titulo, css, headers (meta-data y otros) y body.

luego tendría que hacer clases que generen... no sé, formularios, tablas, listas, menúes con listas etc etc...

luego otra tanda de clases para obtener datos (de una db) o es muy engorroso esto...

vos qué me recomendás?

maldita porgramación visual :(

esto me pasa por trabajar con microcontroladores, assembler y c :(
  #13 (permalink)  
Antiguo 29/08/2007, 12:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Cómo hacer una Web con POO?

Asi es si quieres que todo sea enteramente un objeto, necesitaras objetos que te representen una tabla un menu etc. y donde puedas hacer tu diseño 100% OOP.

Te recomiendo para que mejor limpies mas tu estructura que uses algun patron como MVC, asi podras separar mejor todo lo que es el HTML de lo que son los datos de fondo.

Saludos.
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 06:12.