El ejemplo es muy sencillo. Básicamente el objetivo es comunicarse con la base de datos de una forma correcta y mantenible para insertar, modifcar, borrar y seleccionar usuarios. (No estoy muy familiarizado con el php, aunque la duda sea más genérica).
Lo que he pensado es en tener una classe Usuario, que sea la definición de usuario. Sólo se encarga de definir que es un usuario. Es decir:
Código:
Ahora bien, voy a tener que hacer operaciones con la base de datos, así que he creado un DAOclass Usuario { private $id; private $username; private $password; //Getters & Setters }
Código:
Y por último, la clase Databse, que es simplemente la conexión al repositorio.class UsuarioDAO{ private $db; private $pdo; public function __construct() { * *$db = new Database; * *$pdo = $db->getPDO(); } public function createUser($user) { * *$sql = 'INSERT INTO users (`username`,`password`) VALUES(:username, :password)'; * *$pdo->prepare($sql); * *$pdo->bindValue(':username', $user->getUsername(), PDO::PARAM_STR); * *$pdo->bindValue(':password', $user->getPassword(), PDO::PARAM_STR); * *return $pdo->execute(); * * * * } //resto de operciones con la bd }
Código:
Entonces si quisiera insertar un usuario haría:class Database { private $pdo; public function __construct() { * *$pdo = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password'); } public function getPdo() { * *return $this->pdo; } }
Código:
Soy consciente que no existe una solución correcta, y que existen varios diseños y patrones para solventar esto, y me gustaría saber si esta está bien implementada, si quizás alguna otra se adaptaría mejor a mis necesidades.$userdao = new UsuarioDAO; $user = new Usuario; $user->setUsername('juan'); $user->setPassword('1234'); $userdao->createUser($user);
Perdón por hacerme pesado con un post tan largo!
Muchas gracias!