Duda sobre constructor múltiple
Publicado por Álvaro (22 intervenciones) el 24/11/2019 14:40:58
Buenod días / tardes, estoy continuando con el proyecto de la tienda de libros online, progresando todo lo que pueda. He implementado hace poco objetos, añadiendo la clase Usuario, donde guardo las funciones para registrarse (de momento en el XML y más adelante en la base de datos) y ahora de iniciar sesión. La cuestión es que el registro lo tengo planteado de la siguiente manera:
Tras unas comprobaciones que no vienen al caso ahora mismo (ya que me funcionan), creo el objeto $usuario pasando por parámetro los datos recogidos mediante el formulario. Aquí dejo el constructor de la clase Usuario:
Hasta aquí todo correcto. Sin embargo, la cosa cambia cuando quiero iniciar sesión, obviamente recurriendo a otro formulario, y por ende, creando un objeto distinto. Para ello necesitaría otro constructor, de la manera que yo lo estoy planteando, pero por lo que he visto, PHP no soporta diversos constructores, cosa que Java sí. Navegando por Internet vi el siguiente ejemplo:
La idea me pareció bastante clara y muy sencilla, sin embargo, no me funciona. Agradecería cualquier ayuda / consejo para este problema, o algún otro modo de realizar el login.
Muchas gracias, y un saludo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["nombre"]) && isset($_POST["password"]) && isset($_POST["direccion"]) && isset($_POST["fechaNacimiento"]) && isset($_POST["email"])) {
if (isset($_POST['registro'])){
$nombreUsuario = $_POST["nombre"];
$email = $_POST["email"];
$contrasenya = $_POST["password"];
$direccion = $_POST["direccion"];
$fechaNacimiento = $_POST["fechaNacimiento"];
$usuario = new Usuario($nombreUsuario, $contrasenya, $email, $direccion, $fechaNacimiento);
if (validacionNombre($nombreUsuario) && validacionEmail($email) && !usuarioExiste($email) && strlen($contrasenya) >= 4) {
$usuario->registrarse();
} else {
$failedRegister = "<div class='alert alert-warning'>Ha ocurrido un error inesperado. Vuelva a intentarlo</div>";
}
}
Tras unas comprobaciones que no vienen al caso ahora mismo (ya que me funcionan), creo el objeto $usuario pasando por parámetro los datos recogidos mediante el formulario. Aquí dejo el constructor de la clase Usuario:
1
2
3
4
5
6
7
8
public function __construct($name, $password, $emailAddress, $address, $birthDate) //PARA REGISTRO
{
$this->nombre = $name;
$this->contrasenya = $password;
$this->email = $emailAddress;
$this->direccion = $address;
$this->fechaNacimiento = $birthDate;
}
Hasta aquí todo correcto. Sin embargo, la cosa cambia cuando quiero iniciar sesión, obviamente recurriendo a otro formulario, y por ende, creando un objeto distinto. Para ello necesitaría otro constructor, de la manera que yo lo estoy planteando, pero por lo que he visto, PHP no soporta diversos constructores, cosa que Java sí. Navegando por Internet vi el siguiente ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class myClass {
public function __construct() {
$get_arguments = func_get_args();
$number_of_arguments = func_num_args();
if (method_exists($this, $method_name = '__construct'.$number_of_arguments)) {
call_user_func_array(array($this, $method_name), $get_arguments);
}
}
public function __construct1($argument1) {
echo 'constructor with 1 parameter ' . $argument1 . "\n";
}
public function __construct2($argument1, $argument2) {
echo 'constructor with 2 parameter ' . $argument1 . ' ' . $argument2 . "\n";
}
public function __construct3($argument1, $argument2, $argument3) {
echo 'constructor with 3 parameter ' . $argument1 . ' ' . $argument2 . ' ' . $argument3 . "\n";
}
}
$object1 = new myClass('BUET');
$object2 = new myClass('BUET', 'is');
$object3 = new myClass('BUET', 'is', 'Best.');
La idea me pareció bastante clara y muy sencilla, sin embargo, no me funciona. Agradecería cualquier ayuda / consejo para este problema, o algún otro modo de realizar el login.
Muchas gracias, y un saludo.
Valora esta pregunta


0