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

constructor que no deberia construirse

Estas en el tema de constructor que no deberia construirse en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola gente, quiero consultar como deberia manejar esta situación: el constructor de mi clase solo deberia crear un objeto si le paso el parametro indicado, ...
  #1 (permalink)  
Antiguo 16/04/2007, 08:14
Avatar de webseficientes  
Fecha de Ingreso: enero-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 320
Antigüedad: 19 años, 3 meses
Puntos: 14
constructor que no deberia construirse

Hola gente, quiero consultar como deberia manejar esta situación:

el constructor de mi clase solo deberia crear un objeto si le paso el parametro indicado, y en otro caso no deberia crear un objeto. Mi duda es como deberia manejar el caso que el parametro no es correcto, que deberia devolver o como deberia actuar.

Gracias de antemano.
__________________
Gerardo Benitez
Programador Web Freelance, SEO, Diseño web
  #2 (permalink)  
Antiguo 16/04/2007, 08:34
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: constructor que no deberia construirse

Una simple respuesta:

Excepciones



Para eso sirven las excepciones para enviar errores y mostrarlos al usuario, te dejo un ejemplo:

Código PHP:
class MiObjeto {
     public function 
__construct($unarray) {
           if( !
is_array$unarray ) ) {
                 throw new 
Exception'$unarray debe ser un array, se envio: ' gettype$unarray ) . '.' );
           }
     }
}

echo 
"Prueba correcta:";

try{
    
$obj = new MiObjeto( array() );
} catch( 
Exception $e ) {
    echo 
$e->getMessage();
}

echo 
"Prueba incorrecta:";

try{
    
$obj = new MiObjeto"1" );
} catch( 
Exception $e ) {
    echo 
$e->getMessage(); // Nos imprime un error que se envio un string

Espero te haya quedado claro.

Salu2.
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 09:31.