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

¿por qué trabajar con POO?

Estas en el tema de ¿por qué trabajar con POO? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Muy buenas a todos :). Estoy capacitandome para un proyecto (ya que yo estoy algo atrasado a lo que refiere en programación y diseño web, ...
  #1 (permalink)  
Antiguo 14/07/2006, 08:36
 
Fecha de Ingreso: enero-2006
Ubicación: mi casa
Mensajes: 255
Antigüedad: 18 años, 3 meses
Puntos: 0
¿por qué trabajar con POO?

Muy buenas a todos :).
Estoy capacitandome para un proyecto (ya que yo estoy algo atrasado a lo que refiere en programación y diseño web, mi ultima capacitación fue hace 4-5 años, por lo tanto estoy muy pero muy atrasado, ya se usa XHTML y yo sigo con mi HTML 4 Jaja)
Y voy por lo mismo con PHP.

Alguién puede decirme para qué usar POO en PHP, las clases y todo eso?
Sinceramente soy de programar con el paradigma de programación estructurada, cuando estuve estudiando C jamás me gustó pasarme al C++ y manejar clases, polimorfismo, herencia y demás, a pesar de que lo usé para construir un motor SMTP.
Sin embargo, para qué puedo usarlo, beneficios y demás...
La verdad la única persona que me dijo algo fue:

"Para que tu codigo se vea más limpio y bonito, además de que es lo que piden ahora en las empresas y en desarrollo de proyectos de software grandes.. además puedes mantener el código más facilmente"

Lo cual, no me deja convencido, y es que soy muy vago para seguir aprendiendo POO por que no tengo razones ni motivantes reales que me lo hagan seguir aprendiendo...

pues un saludo y haber :)
gracias de antemano =)

Ah olvidaba decir! que me cuesta mucho pensar en objetos, en otras palabras, cambiar mi mentalidad de programar estructuradamente o con funciones a codear usando clases y creando constructores, objetos etc.
  #2 (permalink)  
Antiguo 14/07/2006, 08:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Hola!, mira las ventajas son muchas, por no decir demasiadas jeje, en primera, aparte de que tu codigo es mas "bonito y limpio", puedes encapsular mas tus diseños, aparte de que puedes hacer uso del paradigma MVC para programar.

Por decir, puedes en primera separar el 100% del codigo de la presentacion, usar diferentes clases, herencia, etc.

Una vez que empiezas con POO, la verdad programar de manera funcional es mas dificil, por decir toma por ejemplo este codigo de un programa que estoy haciendo:
Código PHP:
<?php
import
"com.empresa.*" );
import"com.empresa.models.duenos" );
import"com.empresa.security.*" );

class 
superadminController extends GeckoController {
    private 
$security null;
    public 
$user;
    public 
$table;
    public 
$form;
    public 
$formTitle;
    
    public function 
__construct() {
        
$this->security = new SecurityAdmin();
        if( !
$this->security->isLoggedIn() ) {
            
$this->redirect"/login/admin/" );
        }
        
        
$this->user $this->security->getUser();
        
$this->setLayout"mainLayout.php" );
        
GeckoTemplate::pushParam'css'"superadmin.css" );
    }
    
    public function 
index() {}
    
    public function 
nuevodueno() {
        
$form $this->createForm("Agregar un Dueño");
        
        if( 
$form->validate() ) {
            
$duenos = new duenos();
            
$fields $form->getFields();
            try {
                
$duenos->save$fields );
                
$this->saveMsg"Dueño Agregado exitosamente" );
            } catch( 
Exception $e ) {
                
GeckoLog::Create()->Log$e->getMessage() . " Trace: " $e->getTraceAsString() );
                
$this->saveMsg"Error al guardar el dueño, tratar nuevamente" );
            }
            
$this->redirect"/superadmin/verduenos/" );
        }
        
        
$this->form $form->build();
    }
// mas codigo
?>
Mi controlador me mappea mis requests de la siguiente forma:
/controlador/accion.html -o- /controlador/accion/

todo mi codigo esta en archivos que se llaman controladores e implementan el codigo logico donde esta todo el acceso a la base de datos.

En programacion funcional tienes mas problema porque hay que hacer diferentes funciones para diferentes codigos y el cambiar solo 1 cosa de una funcion requiere crear otra funcion con lo mismo.

Espero te sirva, y en serio saber mas de POO te va a servir para tu CV.
  #3 (permalink)  
Antiguo 14/07/2006, 12:48
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Estamos en la puerta de entrada a una nueva discusión kilométrica ... pero el comentario que te puedo hacer es el siguiente: "por cada pregunta que te haces, tu mismo te respondes"... lo cual hace redundante volver a responderte

Sobre ventajas? Hay ríos de bites en Internet (contando este foro) como para volver a tratar sobre el "sexo de los ángeles".

¿No te parece?

(a menos que quieras que perdamos días discutiendo para tratar de convencerte de algo que no quieres ni tienes interés de hacerlo)
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #4 (permalink)  
Antiguo 14/07/2006, 12:50
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Pregunta: ¿y esos "import" de donde vienen?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 14/07/2006, 15:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Mi framework los maneja para poder tener mejor almacenado el codigo en sus clases independientes :)
  #6 (permalink)  
Antiguo 14/07/2006, 15:06
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
¿Podrías compartir el código del "import"? Es una solución interesante para un tema discutido: el faltante "namespace" de PHP5

La comunidad agradecida.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 14/07/2006, 15:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Claro!, solo que es parte de todo mi framwork y el modelo MVC que desarrolle jeje, compartiria todo mi framework pero la verdad no lo he documentado, aunque ya incluye bastantes cosas y bastantes controles, inclusive un control para crear formularios con auto-validacion :D

A continuacion te pego el codigo del import:
Código PHP:
function import$class ) {
        
$cfg GeckoConfig::load();
    
$importDir $cfg->rootDir "/application/";
    
$classDir str_replace"."DIRECTORY_SEPARATOR$class );
    if( 
substr$classDir, -1) === "*" ) { // Importar varias clases
        
$classDir str_replace"*"""$classDir );
        
$importDir .= $classDir;
        
$files GeckoUtils::list_dir$importDir, array( "php" ) );
        foreach( 
$files as $file ) {
            require_once( 
$importDir $file );
        }
    } else {
        
$file $importDir $classDir '.php';
        if( 
file_exists$file ) ) {
            require_once( 
$file );
        } else {
            throw new 
Exception"$class not found" );
        }
    }

  #8 (permalink)  
Antiguo 16/07/2006, 06:02
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Vas a tener que liberarlo, aunque sea creando un wiki para ir armando la documentación con la colaboración de los posibles interesados, porque voy a tener que seguir haciendo preguntas (soy muy curioso ):

- ¿Qué hace GeckoConfig::load();?

- Veo que estás usando "excepciones" (felicitaciones! ), has tenido problemas para atrapar excepciones (entre el "try" y "catch")?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #9 (permalink)  
Antiguo 16/07/2006, 19:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Hola, jeje es parte de todo mi framework, y si la intencion si es sacarlo al "publico", pero si me gustaria documentarlo porque es lo que le falta, actualmente se compone de:

- un modelo MVC
- una clase para bases de Datos (sin abstraccion :( es solo pa MySQL, pero creo se podria cambiar sin afectar a ningun otro componente ;))
- un paginador orientado a objetos (no nescesita usar una base de datos, funciona con cualquier cosa que quieras paginar)
- un manejador de tablas al estilo ZendDB
- un manejador de tablas que provee formulario de insercion, borrar, actualizar y ver los datos solo con una clase
- una clase para manejar la configuracion en XML
- una clase para crear formularios con varios objetos desde el server con validacion JavaScript creada automaticamente y en el server
- una clase para obtener los datos de $_POST, $_GET, $_COOKIE, de forma sencilla y con chequedo de inyecciones
- Una clase para logger
- Una clase para crear Tablas de HTML a partir de un query con paginado y sorteo automatico (y plugins)
- Una clase para crear Tablas normales a partir de objetos
- una clase para parseo de Templates al estilo de Symphony (similar :p)
- Una clase generar XML orientado a objetos
- Una clase para manejar el MVC (Controlador, y View)
- Una clase de utilerias general.

Para finalizar el GeckoConfig::load() me devuelve un objeto con la configuracion que puse en el XML, (hace cacheo y es super rapida)

Actualmente mi clase facilita la creacion de sitios web, al limpiar y crear una estructura sencilla:
/
.../application/ <- Directorio general para hacer el "import" yo aqui guardo toda la aplicacion
.../application/controllers/ <- Se guardan aqui todos los controllers
.../config/ <- Aqui se guarda el XML, y se hace el cacheo
.../log/ <- Aqui se guarda el Log
.../tpl/ <- Aqui se guardan los templates (html), en sub directorios por controlador, asi como el mainLayout, y el errorLayout
.../web/ <- Aqui se guarda todo el contenido web que se ocupa, como imagenes, archivos, flash, etc.
/.htacces <- usa mod_rewrite para parsear los requests y protege todos los folders excepto el directorio web
/index.php <- el archivo de "boot" que crea la instancia unica del framework

Espero con esto conteste tus dudas :P, y pues no hasta ahorita no he tenido problemas con el try catch, jeje vengo de un entorno Java y la vdd las extrañaba :D

Última edición por GatorV; 16/07/2006 a las 19:28
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 02:14.