PHP

Curso de Creación y Publicación de Packages en PHP

Crea y publica packages en Packagist para PHP, instalables vía Composer, con sus pruebas unitarias y flujos de CI
Inscripciones abiertas
Avanzado
26 Clases 9 h (aprox.)
79€
65€
Precio en promoción

Próxima entrega

Viernes 18 de julio

Vídeo on-demand: "Refactorización para mejora del diseño de las reglas de validación"

Si te dedicas al desarrollo profesional con PHP estamos seguros que usarás Composer para la gestión de las dependencias. Si no conoces esta herramienta, deberías empezar por ahí. La verás usar en prácticamente todos los cursos de PHP impartidos en EscuelaIT, ya que es un conocimiento básico y esencial para el desarrollo moderno.

Sin embargo, aunque la mayoría usemos Composer, no todo el mundo tiene el conocimiento necesario para publicar sus packages, con código de base que usa proyecto tras proyecto. En la mayoría de los casos acabamos copiando y pegando archivos que nos viene bien reutilizar de un proyecto a otro.

Publicar packages en Packagist puede ser una excelente experiencia, no solo para facilitar el desarrollo de los proyectos con código de base que tendrás al alcance de un simple comando de consola (composer require), sino también una oportunidad de mejorar tu perfil como desarrollador, publicando software libre para que la comunidad lo pueda usar.

En este curso verás que el proceso para publicar un package no es complicado y en poco tiempo lo puedes tener listo. Lo que sí requiere un poco más de tiempo es crear un package bien diseñado, con una estructura correcta, sus pruebas del software, los sistemas de CI y todo lo que necesitas para mantener los estándares de calidad que requiere un proyecto de software libre. Todo eso lo podrás aprender en este curso de creación de paquetes en Composer.

Qué aprenderé en el Curso de Creación y Publicación de Packages en PHP

  • Desarrollar con PHP usando buenas prácticas
  • Manejar espacios de nombres (namespaces) de una manera más consciente
  • Configurar el sistema de autoload de clases y funciones de Composer
  • Realizar las pruebas del software con PHPUnit sobre los packages publicados
  • Aplicar técnicas de refactoring para mejorar el diseño de los packages
  • Entender los flujos de trabajo habituales para automatizar las pruebas y el despliegue de nuevas versiones de los proyectos CI/CD
  • GitHub Actions para automatizar los flujos de trabajo

Objetivos del curso

Desarrollar packages para publicar en Packagist, de modo que se puedan instalar en cualquier proyecto PHP mediante Composer. Desarrollar las pruebas del software de los packages y mantener un enfoque dirigido por pruebas con PHPUnit, para llegar a un diseño correcto usando técnicas de Refactoring. Correr las pruebas automáticamente con un enfoque CI usando GitHub Actions y gestionar las versiones para publicar los packages en Packagist con cada nueva actualización.

Por qué debes aprender creación y publicación de Packages en PHP

Este es un curso que abordará numerosas áreas esenciales del desarrollo moderno, como el diseño del software, las pruebas del software, GitHub Actions para poder aplicar enfoques de CI, manejo de Git y GitHub para Pull Request, correr pruebas automáticamente y realizar otras automatizaciones con GitHub Actions, etc. Todo bajo el objetivo de publicar packages en Packagist que sean instalables en cualquier proyecto vía Composer, fáciles de mantener y con estándares de calidad elevados.

Por tanto, es útil para cualquier persona que quiera mejorar sus conocimientos de desarrollo con PHP y las herramientas habituales en el mundo del desarrollo moderno de proyectos de software.

Además, publicar packages en Packagist te dará la oportunidad de mejorar tus flujos de trabajo, pudiendo mantener de una manera centralizada las piezas de software que usas repetidas veces a lo largo de los distintos proyectos que vas realizando. Además, puede ser una buena oportunidad para mejorar tu perfil de desarrollador, mostrando al mundo lo que eres capaz de hacer en el área del software libre con PHP.

Qué tengo que saber

Es necesario sobre todo tener un conocimiento sólido sobre el lenguaje PHP.

Además en este curso veremos pruebas con PHPUnit y haremos uso del sistema de control de versiones Git y el servicio de GitHub, por lo que sería ideal tener también algunos conocimientos sobre estas herramientas.

Clases y contenidos

Objetivos del Curso de Creación y Publicación de Packages en PHP Gratis

En este vídeo hacemos un resumen de los contenidos y objetivos que vamos a abordar durante el curso, en las distintas disciplinas que abarcamos, desde el desarrollo con PHP, las pruebas, el diseño del software y las operaciones DevOps.

Creación de package para Composer desde cero

Comenzamos nuestro primer proyecto del curso, un package para crear contraseñas de manera aleatoria basadas en una configuración definida por el desarrollador. Veremos los pasos necesarios para crear el package, las pruebas y configurar el composer.json.

Composer init Gratis

Cómo inicializar la creación de un proyecto que pretendemos publicar en Packagist, con el comando composer init. Explicamos cómo realizar la configuración inicial del proyecto.

Clase password generator

Creamos la clase en cuestión que será la principal en nuestro proyecto, con su espacio de nombres (namespace) y las convenciones necesarias para que funcione en el marco de un package de Composer.

Iniciar Git en el proyecto y explicaciones sobre cómo crear funciones globales

Veremos cómo inicializar el repositorio Git para el control de versiones, que será necesario para publicar el package y configurar los flujos de trabajo. Además daremos unas notas sobre el trabajo con "helpers" que podrías tener en tu package con funciones globales, que no necesitamos, pero que te contamos por si acaso tú las quieres crear en un package.

Desarrollo de los tests unitarios

Todo package profesional debería tener sus propios tests. En este vídeo te explicamos cómo hacerlos y cómo configurar los namespaces específicos para desarrollo y para los test.

Ampliando los test de nuestra clase

Añadimos nuevos test al proyecto para completar nuestros casos de prueba, a fin de tener un package suficientemente robusto.

Personalizar la creación de claves

La idea de este package es crear claves que puedan personalizarse mediante código. En este vídeo veremos cómo crear un API fluída para que el uso de la clase sea muy sencillo e intuitivo, con el que podemos definir las características de la clave que se debe generar.

Iniciar un proyecto de package con Composer Gratis

Cómo iniciar un nuevo proyecto que pretendemos publicar en un package en Packagist. Entender el sistema de autoload, los namespaces que debemos configurar, la estructura del proyecto que se espera, etc.

Publicar un package en Packagist

Para que el package se pueda instalar vía Composer debemos publicarlo en Packagist. En los próximos vídeos veremos paso por paso cómo conseguir esta subida del package y cómo actualizar las versiones cuando sea necesario.

Conociendo Packagist

Antes de comenzar el proceso para publicar el package vamos a conocer algunos detalles de Packagist, que es el sitio que sirve de repositorio de paquetes open source desarrollados en PHP. Veremos algunas cosas interesantes sobre la documentación que nos entregan para explicar el proceso.

Subir el paquete a Packagist

En este vídeo vamos a subir el package a Packagist para que esté disponible ya para la comunidad de desarrolladores PHP. Veremos que es un proceso muy sencillo y veremos que, si hemos creado nuestra cuenta de Packagist con nuestro usuario de GitHub se define automáticamente el webhook necesario para que Packagist actualice el paquete cada vez que se cambia la release.

Cómo se actualiza un paquete en Packagist

En este vídeo veremos el proceso para actualizar el package, que consiste en crear una nueva tag en el repositorio Git y luego crear una release en GitHub con el mismo nombre. Una vez configurada, si hemos hecho bien el hook, la actualización es automática.

Comenzar un package de validación en PHP

Vamos a construir un segundo proyecto en este curso, más complejo que el anterior y que requerirá tener una jerarquía de clases y un diseño que permita su modularidad, extensibilidad y un fácil mantenimiento. Este segundo proyecto lo vamos a desarrollar además siguiendo el flujo de TDD.

Configuración de composer para el nuevo package

Comenzamos el proyecto de librería de validación para PHP, con la inicialización del proyecto y los namespace para el código de las clases y para el código de test.

Desarrollando el package con TDD

En este segundo proyecto de package vamos a aplicar un flujo de trabajo dirigido por pruebas, lo que sería el TDD. Veremos cómo vamos desarrollando el software siguiendo esta metodología.

Añadir nuevas reglas de validación

Vamos avanzando en el proyecto añadiendo reglas de validación, que básicamente es cómo va a escalar nuestro package. Veremos cómo aplicar la nueva regla y explicaremos cómo este código puede transformarse en un problema más adelante cuando tengamos decenas de reglas.

Lanzar excepción cuando nos envíen reglas de validación desconocidas

Cómo vamos a gestionar las reglas de validación desconocidas. Explicamos cómo se pueden levantar excepciones para asegurarnos que nadie nos llama mal y cómo podemos testear que estas excepciones ocurren.

Cómo informar los errores de validación

Cómo aplicar mejoras en nuestra biblioteca de validación para que también se pueda informar a quienes usan el package sobre los problemas encontrados al validar los datos.

Refactorización y aplicación de patrones

En los siguientes vídeos vamos a iniciar una serie de refactorizaciones para mejora del diseño de la biblioteca de validación y de los test unitarios de las clases.

Refactorización para mejora del diseño de las reglas de validación

Vamos a aplicar una mejora en la biblioteca de validación para conseguir mejorar el diseño, aplicando una mejor modularidad del software. Comenzamos convirtiendo cada método de validación de una regla particular en una clase.

Añadir a Google Calendar
Refactorización de diseño aplicando factoría y patrón strategy

En esta refactorización vamos a aplicar unas mejoras de un par de patrones conocidos. Vamos a crear una factoría para construir los objetos de validación y aplicar a la vez el patrón strategy, que conseguimos por haber puesto cada regla en su propia clase.

Añadir a Google Calendar
Aplicar data providers de PHPUnit para mejorar los test

Aplicamos la herramienta de los "data provider" que nos ofrece PHPUnit para mejorar la sencillez de los test y evitar escribir una y otra vez test que son prácticamente copiados de otros, lo que también impactará positivamente en la escalabilidad de las pruebas.

Añadir a Google Calendar

Crear reglas simples, parametrizadas y validador compuesto

Vamos a extender el código de la biblioteca creando reglas de validación simples y reglas de validación parametrizadas, para lo que necesitaremos nuevas maneras de proceder a la hora de parsear las reglas. Además vamos a hacer ya el validador compuesto, que permitiría no solamente validar campos sueltos, sino todo un array asociativo de datos de distintos campos.

Crear una regla para validar URL

Creamos una regla simple para mostrar lo sencillo que es ahora crear los métodos de test gracias a los data providers.

Añadir a Google Calendar
Crear reglas de validación parametrizadas

En esta ocasión vamos a crear reglas un poquito más complejas para poder resolver temas que más tarde o más temprano debería gestionar nuestra biblioteca de validación. Para ello veremos cómo crear reglas parametrizadas.

Añadir a Google Calendar
Refactor: separar a clase el parseador de reglas

Vamos a parar un momento la extensión para refactorizar el sistema de parseado de reglas de validación, creando una nueva clase que se especializará en esta tarea. Esta tarea es una refactorización para mejora del diseño, ya que no vamos a cambiar el API ni la funcionalidad.

Añadir a Google Calendar
Validador de un array asociativo de campos

En este vídeo completamos la funcionalidad de nuestra biblioteca de validación, creando un método que nos permite validar un array asociativo de datos de campos, como el típico que nos llegaría por formulario con $_POST o por querystring con $_GET. Con esto terminaremos, al menos por el momento, de ampliar la funcionalidad de la librería y podremos pasar a definir nuestro sistema de integración continua.

Añadir a Google Calendar

Implementar la Integración Continua

En los siguientes vídeos vamos a publicar el package en Packagist pero en esta ocasión queremos crear un sistema de CI (Continuous Integration) que nos permita correr las pruebas de manera automática cuando se producen los push o pull request a la rama main. Para ello vamos a usar GitHub Actions.

Publicar el paquete en Packagist

Explicamos los objetivos de esta etapa del curso: implementar un sistema de CI mediante GitHub Actions. Comenzamos por publicar este nuevo paquete en packagist, algo que haremos rápidamente porque ya conocimos el proceso en el vídeo anterior.

Añadir a Google Calendar
Desarrollar nuestro primer workflow de GitHub Actions

Creamos la primera versión del pipeline de integración continua, lo que se llama workflow en el contexto de GitHub Actions. Realizaremos una implementación sencilla para mantener las cosas simples y veremos cómo se ejecuta en GitHub, resolviendo posibles problemas típicos que nos podemos encontrar en el proceso.

Añadir a Google Calendar
Crear estrategias para probar el package con distintas versiones de PHP

De una manera simple podemos construir una matriz de versiones de PHP, que luego podemos usar para que nuestros jobs se ejecuten en cada una de ellas, de modo que podamos asegurar la compatibilidad del package en distintas versiones del lenguaje.

Añadir a Google Calendar

Cursos que también te pueden interesar

¿Conoces nuestra tarifa plana?

Toda la formación de EscuelaIT, con más de 200 cursos completos para aprender las más variadas tecnologías de programación, diseño y marketing online. Todo! con tu suscripción.

Suscríbete