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 clase

Martes 15 de julio

Añadir a Google Calendar

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.

Añadir a Google Calendar

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.

Añadir a Google Calendar
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.

Añadir a Google Calendar
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.

Añadir a Google Calendar

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.

Añadir a Google Calendar
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 a Google Calendar
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.

Añadir a Google Calendar
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.

Añadir a Google Calendar
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.

Añadir a Google Calendar

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
Cómo realizar las pruebas del software con PHPUnit

Cómo usar PHPUnit para hacer pruebas unitarias sobre las clases de nuestro proyecto de package. Cómo aplicar un enfoque basado en TDD para el desarrollo del proyecto.

Añadir a Google Calendar
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
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
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
Refactoring para mejorar el diseño

Una vez tenemos pruebas, cómo mejorar el diseño mediante técnicas de Refactoring.

Añadir a Google Calendar
Cómo publicar un proyecto de Package en Packagist

Veremos cómo podemos publicar nuestro proyecto en Packagist para que esté disponible para la comunidad. Veremos cómo lo podemos usar desde otros proyectos una vez publicado.

Añadir a Google Calendar
Cómo automatizar las pruebas y la publicación del proyecto en Packagist

Veremos cómo podemos automatizar los procesos con GitHub Actions y mantener un flujo consistente y robusto para la gestión de los packages.

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