Re: [PHP-ES] POO con PHP, alguno tiene material ?

From: jm aribau ( jm .en. infodos.com)
Date: Fri Apr 02 2004 - 16:51:31 CEST


A partir de este mail a mi tambien me entraron ciertas dudas al respecto a
tu respuesta:

Estoy deacuerdo que cualquier cambio en la base de datos te destroza la
classe, pero al passarle:
$cliente->insert(array('nombre'=>'Pedro','apellido'=>'Perez'));
es redundante poner el nombre de los indices que coincidiran o no con la de
la base de datos, la
única vetaja que le veo al ponerle los indices es que sólo tienes que hacer
una funcion set para inicializar
que de la otra manera tienes que hacer una funcion set para cada propiedad
de la classe.

$cliente = & new Cliente;
$cliente->set(array('Pedro','Perez');

No seria mejor hacer una classe abstracta tipo:

class db {
    var $tablas = array();
    var $campos = array();
    var $valores = array();

    function db ($in_tablas, $in_campos) {
        $this->tablas = $in_tablas;
        $this->campos = $in_campos;
    function insert{
        $sql = 'INSERT INTO '. implode(',',$this->tablas) .'('.
implode(',',$this->campos). ' VALUES(' . implode(',',$this->valores).')';
        return mysql_query($sql)
    }
    function set($in) {
        $this->valores = $in;
}

class cliente{
    var db;
    var nombre;
    var apellido;

    function cliente {
        $tabla = array ('T_Customer');
        $campos = array ('Name','SurName');
        $this->db = &new db($tabla,$campos);
    }
    function insertar {
        $this->db->set(array($this->nombre,$this->apellido)
        return $this->db->insert;
    }

    funcrion set($in){
        if (in_array('nombre',$in)) $this->apellido=$in['nombre'];
        if (in_array('apellido',$in)) $this->apellido=$in['apellido'];
    }

$cliente = &new cliente;
$cliente->set(array('nombre'=>'JM');
$cliente->insertar;

Cómo hacer que la definicion de el nombre de la tabla, y de los campos sea
un paràmetro que usemos para passarle a la classe?
Tened en cuenta que la classe db es generica i serviria para qualquier otro
objeto que se comunicara con la base de datos.

> At 05:47 25-03-2004, you wrote:
> >Estoy empezando la forma de programar en PHP, de la
> >tradicional (mezclando codigo, sql, etc.) a la manera
> >orientada a objetos.
> >Pero el problema es que creo que ahgo algunas cosas mal o
> >no como deberiean ser en OO.
> >Por ej. si tengo la clase CLIENTE y el metodo insertCliente
> >(en realidad hacer un insert en una tabla)
> >Esta mal que la pase c/u de los campos como parametro ?
> >porque de esa manera pareciera ser una funcion comun en
> >lugar de un metodo.
> >Por ej $Cliente->insertCliente("nombre", "apellido",
> >"domicilio", "etc", "etc");
> >Como se debiera hacer realmente ?
> >por lo que me dijeron debiera ser:
> > $Cliente->nombre = "pepe"
> > $Cliente->apellido = "gomez"
>
> De partida, no me gustan los mapeados objeto-DB relacional. Cualquier
> cambio en la base de datos te destroza tus clases. Bueno...
> A mi parecer, lo mejor es usar la fórmula
> // quitemos el Cliente, al insert, ya que es redundante
> $cliente->insert(array('nombre'=>'Pedro','apellido'=>'Perez'));
> Dentro de la clase, se revisa si el indice corresponde a una propiedad de
> la clase y se cambia el valor en concordancia.
>

-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


This archive was generated by hypermail 2.1.7 : Fri May 14 2004 - 16:04:44 CEST