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