Api rest con Restler y Doctrine

Api rest con Restler y Doctrine

En este tutorial vamos a ver lo sencillo que es desarrollar una Api rest con Restler y Doctrine utilizando PHP-DI para ver lo sencillo que es conectar con una base de datos (en este caso mysql con Doctrine) utilizando el framework rest Restler, sólo debemos hacer algunas configuraciones.

Si tienes alguna duda con el contenido del tutorial te recomiendo los siguientes recursos del blog.

Lo primero que necesitamos es instalar las dependencias y hacer la autocarga de clases con composer, para ello crea el archivo composer.json y añade las siguientes líneas y ejecuta el comando composer install.


Ahora debemos generar una estructura para nuestro proyecto igual que la siguiente, poco a poco iremos completando cada zona.

estructura_restler_doctrine

Configurar Doctrine en Restler Framework

Lo primero que vamos a hacer es configurar Doctrine, para ello vamos a crear un nuevo archivo dentro App/Services llamado Doctrine.php con el siguiente código.


Modifica la configuración que necesites a tus necesidades, con eso podremos conectar Doctrine con nuestra base de datos y realizar el trabajo básico.

Ahora abre el archivo cli-config.php de la raíz y añade el siguiente código, el cual nos ofrecerá la posibilidad de ejecutar doctrine desde la línea de comandos.


Si te fijas, hacemos referencia a un archivo (App/bootstrap.php), aquí es donde debemos hacer el bootstrap de PHP-DI, y es tan sencillo como el siguiente código al archivo App/bootstrap.php.


Con eso creamos la instancia de ContainerBuilder y aplicamos la configuración necesaria para nuestra app, la cual viene dada por un array que devolvemos desde el archivo App/config.php, aunque no vamos a configurar nada para este proyecto, debemos devolver un array vacío, así que abre el archivo y añade el siguiente código.


Aquí es donde podemos añadir todas las dependencias que queramos que sea capaz de resolver PHP-DI, este tema está explicado en el curso de php 7.

Definir la entidad User

Para este ejemplo vamos a trabajar con usuarios, así que vamos a definir una entidad User, para ello crea el archivo App/Models/Entities/User.php y añade el siguiente código.


Esta es una entidad capaz de representar a los usuarios de nuestra aplicación, para crear la tabla en la base de datos sólo debemos ejecutar el siguiente comando desde la línea de comandos.

Habilitar urls amigables

Para evitar el index.php en el acceso a nuestra api vamos a añadir el siguiente archivo .htaccess en la raíz.

Punto de entrada a nuestra Api

Ahora vamos a crear el punto de entrada de nuestra api, para ello vamos a crear el archivo index.php en la raíz con el siguiente código.


No puede ser más sencillo…

Ahora vamos a crear un archivo llamado App/Api/Base.php, este será el “controlador” base de nuestra Api, así, si queremos incrementar la app no tendremos que repetir código en todos sitios y será suficiente con escribirlo en este archivo, aunque no es necesario, no está de más.


De esa forma ya obtenemos el entityManager de Doctrine, a través del cual podemos tener acceso a nuestras entidades, ahora, y ya para finalizar, vamos a crear el archivo App/Api/Users.php y vamos a añadir el siguiente código, el cual es un crud completo utilizando la entidad User.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies
¿Quieres aprender a programar de forma rápida y ordenada sin perder tu tiempo?

En cursosdesarrolloweb.es tenemos 40 cursos disponibles sobre desarrollo web y móvil.

  • Cursos con acceso ilimitado.
  • Nada de suscripciones, pagas una vez y accedes para siempre.
  • Cursos actualizados utilizando las tecnologías más demandadas.
  • Acceso inmediato, una vez te inscribas puedes acceder.
  • Recibe soporte en caso de dudas a través de los foros.
  • Descarga tu certificado una vez finalices el curso.