Ejercicios de Patrones de diseño en PHP (I)

CMS::Introducir Singleton en la parte del cms del proyecto de integración

En este ejercicio se pide integrar el patrón **Singleton** en la parte del CMS del proyecto de intregración. Para ello crea la definición de la clase **DBManager.php** que contiene el código de dicho patrón y cuyo objetivo es controlar que sólo se realiza el acceso a la base de datos desde una sola instancia. Sólo tienes que introducir ese cambio en los ficheros **libros.php**, **libros_ficha.php** y **libros_guardar.php**. Se deja como optativo integrarlo en los otros ficheros: autores.php, pedidos.php, etc.

Guarda la clase en la carpeta **core**.

Una vez que hayas introducido el patrón Singleton comprueba que funciona igual que antes.

CMS::Introducir LibroDAO en el proyecto

En este ejercicio se pide añadir el patrón **DAO** de libros dentro del proyecto. La clase se llamará **LibroDAO** (**class.libroDAO.php**) en el proyecto dentro de la carpeta **core**.La clase **LibroDAO** tendrá un atributo privado **connection**. Sólo tienes que introducir ese cambio en los ficheros **libros.php** y **libros_ficha.php**. Se deja como optativo integrarlo en los otros ficheros: autores.php, pedidos.php.

Habrá que implementar:

  • El constructor que recibe una conexión y se la asigna al atributo privado $connection.

  • El método create() que recibe un libro indexado asociativamente e inserte el mismo en la base de datos. Si se produce un error al insertar, lanzar una excepción.

  • El método read() que recibe un parámetro $id y devolverá el libro (id, isbn, titulo, precio, autor y editorial). En caso contrario lanzar una excepción.

  • El método update() que recibe un libro indexado asociativamente y actualiza el mismo en la base de datos. Si se produce un error al actualizar, lanzar una excepción.

  • El método delete() que recibe un parámetro $id y borra el libro de la base de datos.

  • El método getLibros() que devuelve un array con todos los libros dados de alta junto el autor del libro. Habrá un while que recorra la tupla de resultados por lo que en cada iteración del bucle habrá que asignar al array libros[] a la fila libro que devuelve fetch.

  • El método getComentariosValidadosLibro($id) que recibe como parámetro el identificador de un libro y mediante un sentencia reparada devolverá el número comentarios validados de ese libro. Debes usar count(*) en el sql y el método fetchColumn() de PDO.

  • El método getComentariosTotalesLibro($id) que recibe como parámetro el identificador de un libro y mediante un sentencia reparada devolverá el número de comentarios de ese libro.Debes usar count(*) en el sql y el método fetchColumn() de PDO.

Dentro del fichero **libros.php** realiza los cambios necesarios para requerir la clase LibroDAO pasándole la conexión que nos devuelve el método **getInstance()** de la clase **DBManager**.

Dentro de **libros_ficha.php** realiza los cambios necesarios para requerir la clase LibroDAO pasándole la conexión que nos devuelve el método getInstance() de la clase DBManager y después obtienes los datos del libro, el número de comentarios validados y totales, el número total de votos junto con la media de votaciones y el autor o autores asociados a ese libro.

results matching ""

    No results matching ""