Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/12/2014, 14:11
Avatar de herzbazi
herzbazi
 
Fecha de Ingreso: febrero-2012
Mensajes: 612
Antigüedad: 12 años, 2 meses
Puntos: 36
Respuesta: php orientado a objetos funciones y su impresión en el documento

Cita:
Iniciado por marlanga Ver Mensaje
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
  1. <?php
  2.     class NuevoUsuario{
  3.         //Atributos o variables
  4.         private $usuario;
  5.         private $correo;
  6.         private $password;
  7.         private $password2;
  8.  
  9.         private $conexion;
  10.    
  11.         public function __construct($conexion)
  12.         {
  13.             $this->conexion = $conexion;
  14.  
  15.             $this->usuario = null;
  16.             $this->correo = null;
  17.             $this->password = null;
  18.             $this->password2 = null;
  19.         }
  20.  
  21.         /* Getter y setter */
  22.         public function getUsuario()
  23.         {
  24.             return $this->usuario
  25.         }
  26.         public function setUsuario($usuario)
  27.         {
  28.             $this->usuario = mysqli_real_escape_string($this->conexion, $usuario);
  29.         }
  30.  
  31.         public function getCorreo()
  32.         {
  33.             return $this->correo
  34.         }
  35.         public function setCorreo($correo)
  36.         {
  37.             $this->correo = mysqli_real_escape_string($this->conexion, $correo);
  38.         }
  39.  
  40.         public function getPassword()
  41.         {
  42.             return $this->password
  43.         }
  44.         public function setPassword($password)
  45.         {
  46.             $this->password = mysqli_real_escape_string($this->conexion, $password);
  47.         }
  48.  
  49.         public function getPassword2()
  50.         {
  51.             return $this->password2
  52.         }
  53.         public function setPassword2($password2)
  54.         {
  55.             $this->password2 = mysqli_real_escape_string($this->conexion, $password2);
  56.         }
  57.  
  58.         /* Validaciones */
  59.         private function validarUsuario()
  60.         {
  61.             return !empty($this->getUsuario());
  62.         }
  63.  
  64.         private function validarCorreo()
  65.         {
  66.             return filter_var($this->correo, FILTER_VALIDATE_EMAIL) !== false;
  67.         }
  68.  
  69.         private function validarPassword()
  70.         {
  71.             return !empty($this->password) && !empty($this->password2) && $this->password == $this->password2;
  72.         }
  73.  
  74.         public function isValido()
  75.         {
  76.             return $this->validarUsuario() && $this->validarUsuario() && $this->validarPassword();
  77.         }
  78.  
  79.         /* Guardar BD */
  80.         public function guardar(){
  81.             if ($this->isValido()) {            
  82.                 $sql = "INSERT INTO usuarios (usuario, correo, password)
  83.                        VALUES ('{$this->getUsuario()}', '{$this->getCorreo()}', '{$this->getPassword()}')";
  84.                 return mysqli_query($this->conexion, $sql);                
  85.             } else {
  86.                 return false;
  87.             }
  88.         }
  89.  
  90.     }


Programa principal

Código PHP:
Ver original
  1. $conexion = mysqli_connect("127.0.0.1", "root", "12345", "gestor_usuarios");
  2. $nuevo_usuario = new Nuevo_Usuario($conexion);
  3. $nuevo_usuario->setUsuario($_POST['usuario']);
  4. $nuevo_usuario->setCorreo($_POST['correo']);
  5. $nuevo_usuario->setPassword($_POST['password']);
  6. $nuevo_usuario->setPassword2($_POST['password2']);
  7.  
  8. if ($nuevo_usuario ->guardar()) {
  9.     echo "Nuevo usuario creado.";
  10. } else {
  11.     echo "No se ha podido crear el usuario.";
  12. }
no sabes lo mucho que te agradezco esa orientación que me has dado, la tomare en cuenta para futuras oportunidades , mientras leere varias veces el código que me has dado y si surgen dudas , seguro que investigo en San Google, tendre que seguir leyendo para poder llegar a hacer esto.

por lo menos de la mejor forma , ya que muchos son programadores, pero pocos son realmente buenos..

un puntillo para ti

muy agradecido
__________________
Enseña todo lo que sepas...
Aprende todo lo que puedas..