Hola GatorV
Volviendo a leer mi post he visto que no me he explicado todo lo bien que debería, sorry.
Lo que quiero es que al crear el objeto si no se cumplen unas condiciones él mismo me devuelva false ya que lo necesito para comparar.
Te pongo código para que se me entienda mejor.
Fichero donde creo el objeto:
Código PHP:
....
$obj = new Login($post_usuario, $post_clave);
var_dump($obj); //En php4 devuelve false, en php5 el objeto con sus propiedades
if ($obj !== false)
{
session_start();
$_SESSION['USUARIO'] = $post_usuario;
$_SESSION['CLAVE'] = $post_clave;
}
....
La clase Login me comprueba que exista el usuario en la base de datos, si no existe no inicia la sesión.
Constructor de la clase Login:
Código PHP:
.....
$res = $this->coneccion->consulta("SELECT * FROM clientes WHERE usuario='$usuario' AND clave='$clave'");
if (!$res)
die($this->coneccion->ultimoError());
if ($this->coneccion->numeroResultados() == 0)
{
//$this = false; (en php4 funcionaba con esta línea)
unset($this); //(Cambio para PHP5)
var_dump($this); //Dentro del constructor en php5 devuelve null y en php4 false
return false;
}
...
El caso es que en php4 si el usuario no estaba en la bdd después de crear el objeto hacía un var_dump($obj) y me daba false y por tanto no iniciaba sesión.
Sustituyendo $this = false por unset($this) para que me funcionara en php5 al hacer el var_dump($obj) me devuelve el objeto con todas sus propiedades, es decir, no me lo elimina. Ahora ya he solventado mi problema poniendo un atributo que me diga si el login se ha efectuado con éxito o no y así en lugar de comparar el objeto en sí comparo el valor de ese atributo pero me quedo con la duda de pq se comportan diferente. ¿Me lo sabrías responder?
Gracias por tu tiempo.