Foros del Web » Programando para Internet » PHP »

PHP OO Cual seria la mejor forma para este metodo?

Estas en el tema de Cual seria la mejor forma para este metodo? en el foro de PHP en Foros del Web. Buenas tardes! Me enseñaron a crear los métodos de mis objetos de esta forma... Código: public function eliminar(){ $base=new BaseDatos(); if($base->Iniciar()){ $consultaBorra="DELETE FROM clientes WHERE ...
  #1 (permalink)  
Antiguo 22/10/2012, 18:31
 
Fecha de Ingreso: agosto-2009
Mensajes: 51
Antigüedad: 14 años, 8 meses
Puntos: 1
Cual seria la mejor forma para este metodo?

Buenas tardes!

Me enseñaron a crear los métodos de mis objetos de esta forma...


Código:
public function eliminar(){
		
		$base=new BaseDatos();
		if($base->Iniciar()){
			$consultaBorra="DELETE FROM clientes WHERE id_cliente=".$this->getIdCliente();
		
			if($base->Ejecutar($consultaBorra)){
				
			}else{
					echo $base->getError();
					return false;
					
				}			
		}else{
			echo $base->getError();
			return false;
			
		}
	}
Así como esta el método yo debería primero utilizar mi método "buscarCliente" para cargarlo y poder eliminarlo con "$this->getIdCliente()"
Pero esa forma es la mejor? Porque también podría pasarle el id del cliente al método directamente y ahorrarme el cargarlo... de esta forma...

Código:
public function eliminar($id){
		
		$base=new BaseDatos();
		if($base->Iniciar()){
			$consultaBorra="DELETE FROM clientes WHERE id_cliente=".$id;
		
			if($base->Ejecutar($consultaBorra)){
				
			}else{
					echo $base->getError();
					return false;
					
				}			
		}else{
			echo $base->getError();
			return false;
			
		}
	}
Y así evitar el "buscarCliente"... asumo que si hay razones por las que la primera es la correcta... de lo contrario no me lo hubieran enseñado así... (pero me lo enseñaron hace tiempo ya y no tengo a quien preguntar)
Se entiende?

Gracias y saludos!

¿Cual es la mejor forma? y ¿Por que?
  #2 (permalink)  
Antiguo 22/10/2012, 19:34
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Cual seria la mejor forma para este metodo?

La primera no le veo mucho caso, a menos que tu objeto (la clase a la que pertenece el metodo eliminar()) tenga la lógica necesaria para tener un metodo "estatico" como lo tienes tu, se me ocurre por ejemplo un objeto del tipo soldado, en el cual el mismo objeto tiene "definición" propia, en cambio la otra forma da la opción a eliminar el registro que sea, por lo cual es dinamico, todo depende del objeto a la que pertenece dicho metodo, en cualquier forma ambas son validas y correctas usadas en el ambito correcto...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 22/10/2012, 19:56
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Cual seria la mejor forma para este metodo?

Que tal vicluber,

Antes que nada te sugiero que leas sobre los patrones mas comunes para lo que muestras, ActiveRecord - ActiveTable, Table Data Gateway - Row Data Gateway y algo ya mas lejano(en relación a lo que propones) DataMapper.

Con respecto a cual seria mejor, depende de que representa la clase, si es la unidad, lo lógico seria el primer ejemplo, si es la colección, seria el segundo ejemplo.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 22/10/2012, 20:21
 
Fecha de Ingreso: junio-2009
Mensajes: 138
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Cual seria la mejor forma para este metodo?

Un poco de seguridad tampoco vendría mal, primero comprobar que el objeto no exista y que el id de usuario sea tratado como entero (int).

Código PHP:
Ver original
  1. public function eliminar($id)
  2. {
  3.     global $base;
  4.    
  5.     if(!is_object($base) && !($base))
  6.     {
  7.         $base = new BaseDatos();
  8.     }
  9.    
  10.     if($base->Iniciar())
  11.     {
  12.         $consultaBorra = "DELETE FROM clientes WHERE id_cliente=" . (int)$id;
  13.         if($base->Ejecutar($consultaBorra))
  14.         {
  15.            
  16.         }
  17.         else
  18.         {
  19.             echo $base->getError();
  20.             return false;      
  21.         }
  22.     }
  23.     else
  24.     {
  25.         echo $base->getError();
  26.         return false;  
  27.     }
  28. }
  #5 (permalink)  
Antiguo 22/10/2012, 21:58
 
Fecha de Ingreso: agosto-2009
Mensajes: 51
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Cual seria la mejor forma para este metodo?

Ey gracias gente!

Muy útil!

Saludos!

Etiquetas: metodo
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 23:19.