Usa getters y setters. No uses constructores con muchos argumentos, es mejor constructores vacios, que pongan variables por defecto, y llamar a cada set por separado. No hagas metodos con dos mil funcionalidades. Un método sólo debe hacer una cosa, y hacerla bien. Esto te obligará a partir métodos en otros más pequeños; o incluso sacar funcionalidad poco relacionada a una clase a otra clase mas específica.
Las variables globales cono :GET y _POST sólo deberían ser accedidas por el método de la clase que haga de MAIN, es decir, de punto de entrada a tu "programa", o como mucho, por clases creadas específicamente para recuperar esas variables globales contenidas en _GET, _POST, _SESSION, etc. Las variables globales son cosas de la programación estructurada, pero están prohibídas en POO. La "singletonitis", es decir, usar singletons para todo, también es una muy mala idea en PHP.
Nadie escribe una buena clase a la primera, ni aunque funcione bien. Nunca olvides releer mil veces tus clases, y mejorarlas siempre que puedas. La orientación a objetos no es solo crear clases, es reusabilidad, abstracción, herencia, polimorfismo, encapsulamiento y ocultación. Si no sabes usar todo lo que conlleva cada una de estas caracterísitcas, o peor, no las conoces, no estarás programando POO aunque uses clases.
Por ejemplo, una versión muy recortada de tu código podría parecerse a esto:
Código PHP:
Ver original<?php
class NuevoUsuario{
//Atributos o variables
private $usuario;
private $correo;
private $password;
private $password2;
private $conexion;
public function __construct($conexion)
{
$this->conexion = $conexion;
$this->usuario = null;
$this->correo = null;
$this->password = null;
$this->password2 = null;
}
/* Getter y setter */
public function getUsuario()
{
return $this->usuario
}
public function setUsuario($usuario)
{
}
public function getCorreo()
{
return $this->correo
}
public function setCorreo($correo)
{
}
public function getPassword()
{
return $this->password
}
public function setPassword($password)
{
}
public function getPassword2()
{
return $this->password2
}
public function setPassword2($password2)
{
}
/* Validaciones */
private function validarUsuario()
{
return !empty($this->getUsuario()); }
private function validarCorreo()
{
return filter_var($this->correo, FILTER_VALIDATE_EMAIL
) !== false; }
private function validarPassword()
{
return !empty($this->password) && !empty($this->password2) && $this->password == $this->password2; }
public function isValido()
{
return $this->validarUsuario() && $this->validarUsuario() && $this->validarPassword();
}
/* Guardar BD */
public function guardar(){
if ($this->isValido()) {
$sql = "INSERT INTO usuarios (usuario, correo, password)
VALUES ('{$this->getUsuario()}', '{$this->getCorreo()}', '{$this->getPassword()}')";
} else {
return false;
}
}
}
Programa principal
Código PHP:
Ver original$conexion = mysqli_connect("127.0.0.1", "root", "12345", "gestor_usuarios"); $nuevo_usuario = new Nuevo_Usuario($conexion);
$nuevo_usuario->setUsuario($_POST['usuario']);
$nuevo_usuario->setCorreo($_POST['correo']);
$nuevo_usuario->setPassword($_POST['password']);
$nuevo_usuario->setPassword2($_POST['password2']);
if ($nuevo_usuario ->guardar()) {
echo "Nuevo usuario creado.";
} else {
echo "No se ha podido crear el usuario.";
}