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

programación clases con php5

Estas en el tema de programación clases con php5 en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos!!!!!! Estoy empezando con el programacion OO en php5, lo que intento hacer es pasar un a aplicacion echa en php normal a ...
  #1 (permalink)  
Antiguo 14/03/2008, 04:22
vtg
 
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 1 mes
Puntos: 0
programación clases con php5

Hola a todos!!!!!!

Estoy empezando con el programacion OO en php5, lo que intento hacer es pasar un a aplicacion echa en php normal a php5 utilizando clases, tengo implementadas unas cuantas y la verdad que mas o menos todo me funciona genial como tiene q funcionar, pero mi pregunta es:
¿Cuándo programas en clases, todo el codigo de los scripts que no pertenecen a clases tiene que estar referenciado a ellas o se puede meter codigo php normal para hacer otras cosas? la pregunta me viene porq yo intancio las clases y utilizo sus metodos y caracteristicas pero hay cosas que las hago normal, nose si eso se podria decir que es una "guarrada".

Espero que me hayais entendido.
gracias
  #2 (permalink)  
Antiguo 14/03/2008, 05:40
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 7 meses
Puntos: 3
Re: programación clases con php5

Cuando programas con orientación a objetos, lo suyo es tratar todo con objetos y no utilizar apenas código de script ya que sí, queda "guarrete".

Podrías plasmar un ejemplo sobre lo que preguntas? Creo que así te podré ayudar mejor y te quedarán más claros los conceptos.

Un saludo.
  #3 (permalink)  
Antiguo 18/03/2008, 05:46
vtg
 
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: programación clases con php5

Hola!!!
a lo que me refiero es a algo de esto....
Código PHP:
case 'ediNot':    // Modificar Noticia
    // varibles de session
    
$_SESSION['tit_not'] = $_POST['titulo'];
    
$_SESSION['ent_not'] = $_POST['entrada'];
    
$_SESSION['cue_not'] = $_POST['cuerpo'];
    
$_SESSION['fue_not'] = $_POST['fuente'];
    
$_SESSION['fec_pub_not'] = $_POST['fecha'];
    
    
//instanciamos la clase Gestionar Noticias y comprobamos que no exista otra notcia con el mismo titulo.
    
$gesnot=new GestionarNoticias();
    
$res=$gesnot->comprobarTituloEdicion($_POST['titulo'], $id);
    if(
$res==1){ //si existe-> error
        
header ("Location: ../noticias/nuevo/err/1/");
        break;
    }else{
        
/*********************FOTOGRAFIA*******************/
        // Se acualiza la fotografia de la noticia, en caso que corresponda
        
$namFoto '';    // Nombre original del archivo
        
$ExtFoto '';     // Extension del archivo
        // Actualizamos la imagen del objeto, si es preciso
        
if (!empty ($_FILES['fotografia']['name']))
        {
            if (
$_FILES['fotografia']['size'] != 0)
            {
                
$namFoto $_FILES['fotografia']['name'];
                
$nomTemp $_FILES['fotografia']['tmp_name'];
                
// Compruebo que la extension de la imagen sea una de las permitidas
                
if (($ExtFoto Extensiones($nomTemp)) != false)
                { 
// Se obtiene la extension real (tipo o formato) de la imagen
                    
$i 0;
                    while ((
$ExtFoto <> $ExtImagenes[$i]) AND ($i<count($ExtImagenes)))
                    {
                        
$i++;
                    }
                    if (
$i<>count($ExtImagenes))
                    { 
// la foto tiene una extension de las permitidas
                        // Si ya teniamos una imagen para ese objeto la borramos
                        
$not=new Noticia();
                         
//eliminar foto de la carpeta del servidor
                           
$not->eliminarFoto($id);    
                        
//recogemos el archivo existente
                        
$bus=$not->leer($id);
                        if (
$bus!=''){
                            
$pdf_not=$not->getPdf();
                            
$ext_pdf_not=$not->getExtPdf();
                        }
                        
//editamos la noticia
                        
$not->editar($id,'',$_POST['titulo'], $_POST['entrada'], $_POST['cuerpo'], $_POST['fuente'], ue2iso($_POST['fecha']),$namFoto$ExtFoto$pdf_not$ext_pdf_not$hoyL );
                        
// Copiamos la nueva imagen en el servidor
                        
copy($_FILES['fotografia']['tmp_name'], "../../uploads/noticias_fotografias/".$id.".".$ExtFoto);
                    }
                    else
                    {   
// La imagen no tiene un formato adecuado
                        
header("location: ".$urlIntranet."noticias/editar/".$id."/err/2/");
                        exit ();
                    }
                }
                else
                {   
// La imagen no es una imagen
                    
header("location: ".$urlIntranet."noticias/editar/".$id."/err/2/");
                    exit ();
                }
            }
            else
            {   
// La imagen no existe
                
header("location: ".$urlIntranet."noticias/editar/".$id."/err/3/");
                exit ();
            }
        }
        
        
/*********************ARCHIVOS*******************/
        // Se acualiza el archivo de la noticia, en caso que corresponda
        
$namPdf '';    // Nombre original del archivo
        
$ExtPdf '';     // Extension del archivo
        // Actualizamos el archivo del objeto, si es preciso
        
if (!empty ($_FILES['archivo']['name']))
        {
            if (
$_FILES['archivo']['size'] != 0)
            {
                
$namPdf $_FILES['archivo']['name'];
                
$nomTemp $_FILES['archivo']['tmp_name'];
                
// Compruebo que la extension de la imagen sea una de las permitidas
                
if (($ExtPdf ExtensionesDoc($namPdf)) != false)
                { 
// Se obtiene la extension real (tipo o formato) de la imagen
                    
$i 0;
                    while ((
$ExtPdf <> $ExtArchivosPdf[$i]) AND ($i<count($ExtArchivosPdf)))
                    {
                        
$i++;
                    }
                    if (
$i<>count($ExtArchivosPdf))
                    { 
// la foto tiene una extension de las permitidas
                        // Si ya teniamos una imagen para ese objeto la borramos
                        
$not=new Noticia();
                         
//eliminar archivo de la carpeta del servidor
                           
$not->eliminarPdf($id);    
                        
//recogemos el archivo existente
                        
$bus=$not->leer($id);
                        if (
$bus!=''){
                            
$fot_not=$not->getFoto();
                            
$ext_fot_not=$not->getExtFoto();
                        }
                        
//editamos la noticia
                        
$not->editar($id,'',$_POST['titulo'], $_POST['entrada'], $_POST['cuerpo'], $_POST['fuente'], ue2iso($_POST['fecha']),$fot_not$ext_fot_not,$namPdf$ExtPdf$hoyL );
                        
// Copiamos el nuevo archivo en el servidor
                        
copy($_FILES['archivo']['tmp_name'], "../../uploads/noticias_pdf/".$id.".".$ExtPdf);
                    }
                    else
                    {   
// El archivo no tiene un formato adecuado
                        
header("location: ".$urlIntranet."noticias/editar/".$id."/err/4/");
                        exit ();
                    }
                }
                else
                {   
// El archivo no es una imagen
                    
header("location: ".$urlIntranet."noticias/editar/".$id."/err/4/");
                    exit ();
                }
            }
            else
            {   
// El archivo no existe
                
header("location: ".$urlIntranet."noticias/editar/".$id."/err/5/");
                exit ();
            }
        }
            
            
//editamos una noticia, para ello, instaciamos la clase Noticia y llamamos al método editar
            
$not=new Noticia();
            
$bus=$not->leer($id);
            if (
$bus!=''){
                
$fot_not=$not->getFoto();
                
$ext_fot_not=$not->getExtFoto();
                
$pdf_not=$not->getPdf();
                
$ext_pdf_not=$not->getExtPdf();
            }
            
$not->editar($id,'',$_POST['titulo'], $_POST['entrada'], $_POST['cuerpo'], $_POST['fuente'], ue2iso($_POST['fecha']),$fot_not$ext_fot_not$pdf_not$ext_pdf_not$hoyL );    
        
        
        
header ("Location: ".$urlIntranet."noticias/editar/".$_POST['idNot']."/ver/");
        break;
    } 
esto es una parte de un scrip, como ver tengo clase que se llama noticia, y la cual la instancio y uso algunos de sus métodos, lo mismo con gestionar Noticia.

Muchas gracias

Última edición por GatorV; 18/03/2008 a las 09:03 Razón: Agregar tags PHP
  #4 (permalink)  
Antiguo 18/03/2008, 09: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: programación clases con php5

En ese caso estas mezclando código funcional con código orientado a objetos. Si tu quieres programar al 100% en Orientado a Objetos, te recomiendo te ayudes de algún patrón de programación como MVC.

Saludos.
  #5 (permalink)  
Antiguo 18/03/2008, 10:09
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 7 meses
Puntos: 3
Re: programación clases con php5

Eso mismo que dice GatorV.

Por ejemplo, para actualizar la fotografía de la notica...tal vez deberías crear una clase que gestione fotografías, etc.

De esta manera el código del controlador te quedará mucho más limpio y legible y las funcionalidades las tendrás modularizadas.

Al igual que GatorV, te recomiendo un modelo MVC
  #6 (permalink)  
Antiguo 19/03/2008, 02:25
vtg
 
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: programación clases con php5

gracias a los dos por vuestro tiempo y respuestas.
Un saludo
  #7 (permalink)  
Antiguo 19/03/2008, 07:03
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Re: programación clases con php5

En el mundo PHP tenemos 3 categorías macro:
  • Programación Estructurada
  • Programación Estructurada con uso de Objetos
  • Programación Orientada a Objetos

Lo que tu cuentas es el segundo caso, usas objetos "sueltos" pero partes generalmente de un código estructurado, y es muy común que con esta práctica tengas mal diseñado los objetos (porque se te mezclan los conceptos).
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #8 (permalink)  
Antiguo 19/03/2008, 07:10
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 7 meses
Puntos: 3
Re: programación clases con php5

Cita:
Iniciado por enriqueplace Ver Mensaje
En el mundo PHP tenemos 3 categorías macro:
  • Programación Estructurada
  • Programación Estructurada con uso de Objetos
  • Programación Orientada a Objetos
Lo que tu cuentas es el segundo caso, usas objetos "sueltos" pero partes generalmente de un código estructurado, y es muy común que con esta práctica tengas mal diseñado los objetos (porque se te mezclan los conceptos).
Amén
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 17:13.