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

principiante en PHP orientada a objetos

Estas en el tema de principiante en PHP orientada a objetos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos bueno, soy principiante en este tema de Php orientada a objetos y pues estoy realizadno mis primeras practicas y queria sus opiniones, ...
  #1 (permalink)  
Antiguo 10/10/2006, 22:06
 
Fecha de Ingreso: marzo-2004
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
principiante en PHP orientada a objetos

Hola a todos bueno, soy principiante en este tema de Php orientada a objetos y pues estoy realizadno mis primeras practicas y queria sus opiniones, agradeceria su critica y no seais tan asesinos

Código PHP:
<?

class Contactenos
  
{
      
//metodos de cabecera
    
var $name="form";
    var 
$method="post";
    
//tabla Externa
    
var $ewidth "300";
    var 
$eborder "1";
    var 
$ealign "center";
    var 
$ecellpadding "0";
    var 
$ecellspacing "0";
    var 
$ebordercolor "#000066";
    var 
$ebgcolor "#66FFFF";
    
//tabla interna
    
var $iwidth "100%";
    var 
$iborder "0";
    var 
$ialign "center";
    var 
$icellpadding "5";
    var 
$icellspacing "4";
    var 
$ibordercolor ""
    
//titulo
    
var $tcolspan "2" ;
    var    
$taling "center" ;
    var    
$tstyle "style1" ;
    var 
$ttitulo "ttitulo";
    
   
    function 
set_head($name,$method)
      
      {
          
$this->name=$name;
        
$this->method=$method;
      
      }
      
    function 
set_tabla_externa($ewidth,$eborder,$ealign,$ecellpadding,$ecellspacing,$ebordercolor,$ebgcolor)
    
      {
        
$this->ewidth=$ewidth;
        
$this->eborder=$eborder;
        
$this->ealign=$ealign;
        
$this->ecellpadding=$ecellpadding;
        
$this->ecellspacing=$ecellspacing
        
$this->ebordercolor=$ebordercolor
        
$this->ebgcolor=$ebgcolor

      }
    function 
set_tabla_interna($iwidth,$iborder,$ialign,$icellpadding,$icellspacing,$ibordercolor)
      {
      
          
$this->iwidth=$iwidth;
        
$this->iborder=$iborder;
        
$this->ialign=$ialign;
        
$this->icellpadding=$icellpadding;
        
$this->icellspacing=$icellspacing
        
$this->ibordercolor=$ibordercolor
      }
      
    function 
set_titulo($ttitulo,$taling,$tstyle)
      {
        
$this->taling=$taling;
        
$this->tstyle=$tstyle;
        
$this->ttitulo=$ttitulo;
      }             

    function 
display ()
    
      {
      
//stylo
      
echo "<style type='text/css'>";
      echo 
".style1 {color: #003399; font-weight:bold }";
      echo 
"</style>";
      
//inicio de formulario
      
echo "<form id='";
      echo 
$this->name;
      echo 
"' name='";
      echo 
$this->name;
      echo 
"' method='";
      echo 
$this->method;
      echo 
"' action=''>";
      
//inicio de tabla externa
      
echo "<table width='";
      echo 
$this->ewidth;
      echo 
"' border='";
      echo 
$this->eborder;
      echo 
"' align='";
      echo 
$this->ealign;
      echo 
"' cellpadding='";
      echo 
$this->ecellpadding;
      echo 
"' cellspacing='";
      echo 
$this->ecellspacing;
      echo 
"' bordercolor='";
      echo 
$this->ebordercolor;
      echo 
"' bgcolor='";
      echo 
$this->ebgcolor;
      echo 
"'>";
      echo 
"<tr>";
      echo 
"<td>";
      
//inicio de tabla interna
      
echo "<table width='";
      echo 
$this->iwidth;
      echo 
"' border='";
      echo 
$this->iborder;
      echo 
"' align='";
      echo 
$this->ialign;
      echo 
"' cellpadding='";
      echo 
$this->icellpadding;
      echo 
"' cellspacing='";
      echo 
$this->icellspacing;
      echo 
"' bordercolor='";
      echo 
$this->ibordercolor;
      echo 
"'>";
      
//titulo
      
echo "<tr>";
      echo 
"<td colspan='";
      echo 
$this->tcolspan;
      echo 
"'><div align='";
      echo 
$this->taling;
      echo 
"'><span class='";
      echo 
$this->tstyle
      echo 
"'>";
      echo 
$this->ttitulo;
      echo 
"</span><br />";
      echo 
"&nbsp;</div></td>";
      echo 
"</tr>";

                 
      } 
  
  }
  
class 
caja_texto
  
{
  
      
//metodos de cajas de texto
    
var $caja_name ="textfield1";
    var 
$caja_color ="textfield";
    var 
$caja_medida ="20";
    var 
$caja_descripcion ="nombre1";
    var 
$caja_ancho ="49";
    var 
$caja_cien "100";
    var 
$caja_ancho2 "";
    
      function 
set_textfield ($caja_name,$caja_estilo,$caja_medida,$caja_descripcion,$caja_ancho)
      {
        
$this->caja_name=$caja_name;
        
$this->caja_color=$caja_color;
        
$this->caja_medida=$caja_medida;
        
$this->caja_descripcion=$caja_descripcion;
        
$this->caja_ancho=$caja_ancho;
      } 
    function 
calculo()
      {
      
$caja_ancho2 $caja_cien $caja_ancho;
      }  
      
    function 
display_textfield()
      {
          
//estilo
        
echo "<style type='text/css'>";
        echo 
".textfield { background-color: #FFFFCC; color:#0033CC}";
        echo 
"</style>";
        
//cajas de texto
        
echo "<tr>";
        echo 
"<td width='";
        echo 
$this->caja_ancho;
        echo 
"%'>";
        echo 
$this->caja_descripcion;
        echo 
"</td>";
        echo 
"<td width='";
        echo 
$this->caja_ancho2;
        echo 
"%'><input name='";
        echo 
$this->caja_name;
        echo 
"' type='text' class='";
        echo 
$this->caja_color;
        echo 
"' size='";
        echo 
$this->caja_medida;
        echo 
"' />";
        echo 
"</td>";
        echo 
"</tr>";

      }  
  }
  
class 
Boton
  
{
      var 
$bcolspan ="2";
    var 
$baling  "center";
    var 
$bname ="submit";
    var 
$btype "submit";
    var 
$bstylo "style1";
    var 
$bvalue "submit";
    

    
    function 
set_boton($baling,$bname,$bstylo,$bvalue)
      {
        
$this->baling=$baling;
        
$this->bname=$bname;
        
$this->bstylo=$bstylo;
        
$this->bvalue=$bvalue;
      
      }
    function 
display_boton()
    
     {
         echo 
"<tr>";
        echo 
"<td>&nbsp;</td>";
        echo 
"<td>&nbsp;</td>";
        echo 
"</tr>";
        echo 
"<tr>";
        echo 
"<td colspan='";
        echo 
$this->bcolspan;
        echo 
"'><div align='";
        echo 
$this->baling;
        echo 
"'>";
        echo 
"<input name='";
        echo 
$this->bname;
        echo 
"' type='";
        echo 
$this->btype;
        echo 
"' class='";
        echo 
$this->bstylo;
        echo 
"' value='";
        echo 
$this->bvalue;
        echo 
"' />";
        echo 
"</div>";
        echo 
"</label></td>";
        echo 
"</tr>";
        echo 
"</table></td>";
        echo 
"</tr>";
        echo 
"</table>";
        echo 
"</form>";
     
     }       

  }  
  
  
  
  
$objeto = new Contactenos();
  
$textf = new caja_texto();
  
$boton = new Boton();
  
  
$objeto -> set_titulo("Contactenos","center","style1");
  
$textf -> set_textfield ("nombre",".style1","20","nombres","30");
  
$objeto -> display();
  
$textf -> display_textfield();
  
$boton -> display_boton();
  
    
?>
Es algo larga, pero es para hacer mis practicas y pruebas, buenos gracias de antemano por sus opiniones criticas y demas :) saludos
__________________
Software a Medida
voip Locutorios
  #2 (permalink)  
Antiguo 12/10/2006, 21:09
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Es muy difícil opinar sin caer en opiniones muy subjetivas y personales.

Pero lo que te puedo comentar es que no veo mucho el "uso de objetos" ni la "interacción entre ellos". La idea sería que tuvieras varios objetos simples que resolvieran cada uno un problema concreto, una responsabilidad única, separando también de lo que es interfaz de la lógica que quieres implementar.

Por criterio puedes manejar, como para tener el control de lo que haces, que ninguna clase imprima nada directamente, solo la "clase controladora" (la de más alto nivel, la que crea los primeros objetos y los usa) se encargue de finalmente imprimir.

Por ejemplo, puedes tener clases como Form y Tabla. También puedes separar la interfaz con algún sistema de templates, como Smarty, así no tienes código html entreverado con tu código php con la "lógica del negocio".

Pero finalmente todo dependerá hasta cuanto quieres hacer OO y si todo lo harás tu de cero.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #3 (permalink)  
Antiguo 13/10/2006, 01:29
 
Fecha de Ingreso: marzo-2004
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Gracias por responder mi post, pense q nadie lo haria bueno sobre esto:

Cita:
Pero lo que te puedo comentar es que no veo mucho el "uso de objetos" ni la "interacción entre ellos". La idea sería que tuvieras varios objetos simples que resolvieran cada uno un problema concreto, una responsabilidad única, separando también de lo que es interfaz de la lógica que quieres implementar.
Podrias mostrar algunos ejemplos sencillos, ya que como dije al principio recien estoy entran en el PHP POO gracias de antemano
__________________
Software a Medida
voip Locutorios
  #4 (permalink)  
Antiguo 13/10/2006, 05:39
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Ya te tiré una opinión, si lograste hacer estos objetos, solo debes armar los demás. La programación OO es eso, tener objetos independientes que luego interactúan entre ellos.

Tal vez te convendría leer un poco más de conceptos sobre el tema.

Arma otro prototipo, envíalo al foro y lo discutimos.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 14/10/2006, 21:32
 
Fecha de Ingreso: marzo-2004
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
este es un comienzo de un nuevo prototipo que esto haciendo, espero opiniones

Código PHP:
<?
class text_field
{
    public 
$nombre;
    public 
$dimension;
    
    function 
__construct($nombre,$dimension)
        {
            
$this->nombre=$nombre;
            
$this->dimension=$dimension;
        }
    function 
display()
        {
            echo 
"<input name='";
            echo 
$this->nombre;
            echo 
"' type='text' size='";
            echo 
$this->dimension;
            echo 
"' />\n";
            echo 
"";
        }
    
}

class 
tabla
{
    public 
$width;
    public 
$border;
    public 
$align;
    public 
$cellpadding;
    public 
$cellspacing;
    public 
$nombre;
    public 
$dimension;
    public 
$descripcion;
    public 
$objeto;
    
    function 
__construct($width,$border,$align,$cellpadding,$cellspacing)
        {
            
$this->width=$width;
            
$this->border=$border;
            
$this->align=$align;
            
$this->cellpadding=$cellpadding;
            
$this->cellspacing=$cellspacing;
        }
    function 
iniciar()
        {
            echo 
"<table width='";
            echo 
$this->width;
            echo 
"' border='";
            echo 
$this->border;
            echo 
"' align='";
            echo 
$this->align;
            echo 
"' cellpadding='";
            echo 
$this->cellpadding;
            echo 
"' cellspacing='";
            echo 
$this->cellspacing;
            echo 
"'>\n";

        }
        
    function 
terminar()
        {
            echo 
"</table>\n";
        }

    function 
texfield($nombre,$dimension,$descripcion)
        {
            echo 
"<tr>\n";
            echo 
"<td>";
            echo 
$this->descripcion=$descripcion;
            echo 
"</td>\n";
            echo 
"<td>";
            
$objeto = new text_field($nombre,$dimension);
            
$objeto->display();
            echo 
"</td>\n";
            echo 
"</tr>\n";
            echo 
"";

  
            
        }
    
}

class 
formulario
{
    public 
$nombre;
    public 
$metodo;
    public 
$accion

    function 
__construct($nombre,$metodo,$accion)
    {
        
$this->nombre=$nombre;
        
$this->metodo=$metodo;
        
$this->accion=$accion;        
    }

    function 
iniciar()
    {
        echo 
"<form id='";
        echo 
$this->nombre;
        echo 
"' name='";
        echo 
$this->nombre;
        echo 
"' method='";
        echo 
$this->metodo;
        echo 
"' action='";
        echo 
$this->accion;
        echo 
"'>\n";
        
    }
    function 
terminar()
    {
        echo 
"</form>\n";
    }
    
}


//inicio de creacion de objetos
$formulario = new formulario("formulario","post","index.php");
$formulario->iniciar();
$tabla = new tabla("350","0","center","5","4");
$tabla->iniciar();
$tabla->texfield("nombre","20","Nombres");
$tabla->texfield("nombre","20","Nombres");
$tabla->texfield("nombre","20","Nombres");
$tabla->texfield("nombre","20","Nombres");

$tabla->terminar();
$formulario->terminar();



?>
Gracias de antemano por sus respuestas
__________________
Software a Medida
voip Locutorios
  #6 (permalink)  
Antiguo 20/10/2006, 00:32
Avatar de DenniX  
Fecha de Ingreso: octubre-2006
Ubicación: Vivo en Lima, Peru
Mensajes: 11
Antigüedad: 17 años, 6 meses
Puntos: 2
uhmmm aunque me parece interesante, pero no crees que al utilizar POO para solamente insertar etiquetas HTML te estarias alejando de luego utilzar estandares, yo creo que deberias usar POO solamente para lo que seria tus scripts de negocio y no de presentacion x ejm yo uso esto:
Es para manejo de una BD ACCESS
<?php
/*ESTA CLASE MANEJA LAS FUCIONES BASICAS PARA CONSULTAS A LA BASE DE DATOS
*/
class ManejaBD
{

function ejecutarSQL($sql)
{ $cn=odbc_connect("dsn","dba","sql") or die("..no pudo realizarse la conexion!!!");
odbc_exec($cn,$sql) ;

}

function getSQL($sql)
{
$cn=odbc_connect("dsn","dba","sql") or die("..no pudo realizarse la conexion!!!");
$rs=odbc_do($cn,$sql) ;
}

function GetValor($sql)
{ $rs=getSql($sql);
while(odbc_fetch_row($rs))
{ $aux=odbc_result($rs,1);
}
$valor=$aux;
return $valor;
}

function MuestraSQL($sql)
{
$cn=odbc_connect("dsn","dba","sql") or die("..no pudo realizarse la conexion!!!");
$rs=odbc_do($cn,$sql);
odbc_result_all($rs,"id='resultado'");
}
};
?>


y luego puedo reutilzar esta clase en otras como esta:

<?php

//@ clase Centro de Conciliacion
class Centro
{ //maneja tanto los Centros de Conciliacion como los Centros de Formacion

function VerCentro($codCentro)
{ //echo $codCentro;
$mbd=new ManejaBD;
$sql = "SELECT DISTINCT
C.NOMBREDELCENTRO AS CENTRO,
C.DIRECCIONDELCENTRO AS DIRECCION,
C.TELEFONODELCENTRO AS TELEFONO,
C.EMAILDELCENTRO AS EMAIL,
C.FECHARESOLUCIONMINISTERIAL AS FECHA_DE_CREACION,
C.RESOLUCIONMINISTERIAL AS RESOLUCION,
D.DEPARTAMENTO,
... (resto del query) ;";

$rs=$mbd->getSQL($sql);
return $rs;
}

function getIdxNombre($nombre,$tipo)
{ $mbd=new ManejaBD;
$sql="SELECT codigodecentro FROM Centro WHERE nombredelcentro='" & $nombre & "'; ";
$codCentro=$mbd->getValor($sql);
return $codCentro;
}

function ComboCentros()
{ $mbd=new ManejaBD();
$sql="<query>";
$rs=$mbd->getSQL($sql);
echo "<div id='comboCentros'>
[ CENTRO ]
\n<select id='centros' name='centros'>" ;
while(odbc_fetch_row($rs))
{ $codigo=odbc_result($rs,1);
$nombre=odbc_result($rs,2);
echo "\n\t\t<option id='c$codigo' value='$codigo'> $nombre </option>";
}
echo "\n</select> </div>";
}

function ListarxEstado($estado=1)
{
$mbd=new ManejaBD;
if($estado!=2)
{ $sql = "SELECT DISTINCT
C.NOMBREDELCENTRO AS CENTRO,
C.DIRECCIONDELCENTRO AS DIRECCION,
C.TELEFONODELCENTRO AS TELEFONO,
C.EMAILDELCENTRO AS EMAIL,
C.FECHARESOLUCIONMINISTERIAL AS FECHA_DE_CREACION,
C.RESOLUCIONMINISTERIAL AS RESOLUCION,
D.DEPARTAMENTO,
P.PROVINCIA,
S.DISTRITO
... resto de la consulta;";
}
else
{ $sql = "SELECT DISTINCT
C.NOMBREDELCENTRO AS CENTRO,
C.DIRECCIONDELCENTRO AS DIRECCION,
C.TELEFONODELCENTRO AS TELEFONO,
C.EMAILDELCENTRO AS EMAIL,
C.FECHARESOLUCIONMINISTERIAL AS FECHA_DE_CREACION,
C.RESOLUCIONMINISTERIAL AS RESOLUCION,
D.DEPARTAMENTO,
P.PROVINCIA,
S.DISTRITO
... resto de la consulta";
}

$rs=$mbd->getSQL($sql);
return $rs;
}

function ListarxDepartamento($codDep,$estado=1)
{ if($is_set($codDep))
{ $sql = "SELECT DISTINCT
C.NOMBREDELCENTRO AS CENTRO,
C.DIRECCIONDELCENTRO AS DIRECCION,
C.TELEFONODELCENTRO AS TELEFONO,
C.EMAILDELCENTRO AS EMAIL,
C.FECHARESOLUCIONMINISTERIAL AS ... resto de la consulta ;";

$rs=$mbd->getSQL($sql);
return $rs;
}
else
{ echo "No ha definido el Departamento";
}
}

}

?>
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 12:17.