Composer es una herramienta esencial en el desarrollo con PHP que permite la gestión de dependencias y la carga automática de archivos de manera profesional. PSR-4, por otro lado, es una de las reglas establecidas por la organización PHP-FIG que especifica cómo deben manejarse los namespaces y la autocarga en PHP. Estas dos herramientas combinadas mejoran significativamente el proceso de trabajo al facilitar la autoloading de archivos sin necesidad de utilizar include o require.
¿Por qué es importante PSR-4?
Estandarización: Define un estándar de nombres para los namespaces que corresponde a la estructura de directorios, lo cual es muy útil para mantener un código ordenado y comprensible.
Autocarga automática: Con PSR-4, los archivos se autocargan con base en sus namespaces, eliminando la necesidad de cargar manualmente cada archivo en el código.
Interoperabilidad: Permite que diferentes proyectos o bibliotecas sigan un mismo estándar, facilitando el trabajo colaborativo y la integración de herramientas.
¿Cómo implementar Composer con PSR-4?
Para implementar Composer y PSR-4, primero debes tener un conocimiento básico de Composer. A continuación, te explicamos los pasos esenciales:
Inicializa Composer: Abre tu terminal, dirígete a tu proyecto y escribe:
composer init
Durante el proceso, Composer te hará algunas preguntas sobre el nombre del proyecto, el autor, la licencia, etc.
Configura el archivo composer.json: Una vez inicializado, se crea un archivo composer.json. Edita este archivo para definir la autocarga con PSR-4:
"autoload":{"psr-4":{"App\\":"app/"}}
"App\": Este es el prefijo del namespace principal.
"app/": Es el directorio donde residirá la lógica de tus archivos.
Genera las clases y namespaces: Crea la estructura básica de directorios. Por ejemplo:
/app
/Clases/Logic
Luego, en cada archivo PHP dentro de estos directorios, asegúrate de definir correctamente los namespaces:
namespaceApp\Clases;classMichi{// Clase Michi}
¿Cómo cargar los archivos automáticamente?
Para cargar archivos automáticamente, Composer genera un archivo de autoload en el directorio vendor. Es necesario incluirlo en tu punto de entrada del proyecto:
Genera archivos de autoload: En la terminal, dentro del directorio del proyecto, ejecuta:
composer dump-autoload
Esto genera los archivos de autoload necesarios.
Incorpora el autoload en tu proyecto: En tu archivo principal (por ejemplo, index.php):
require'vendor/autoload.php';
Utiliza las clases sin require adicionales: Gracias a PSR-4, puedes utilizar use para incluir directamente las clases que necesitas:
useApp\Clases\Michi;
¿Cuáles son las mejores prácticas al usar PSR-4 y Composer?
Mantén la estructura y nomenclatura: Asegúrate de que el nombre del archivo coincida con el nombre de la clase y respete la estructura de directorios.
Actualiza el autoload: Tras modificar namespaces o estructuras, ejecuta composer dump-autoload.
Reutilización de código: Utiliza use para incluir clases de otros espacios de nombres dentro de tu proyecto.
Documentación y comentarios: Mantener buena documentación y comentarios en tu código facilitando el uso y comprensión de cómo PSR-4 y Composer operan juntos.
Composer y PSR-4 no sólo simplifican el proceso de carga de archivos, sino que también sientan las bases para trabajar con frameworks como Laravel, que sigue estos estándares. Así que, sigue explorando y experimentando con estas herramientas para desarrollar aplicaciones más profesionales y efectivas en PHP.
PSR son un conjunto de reglas o estandares que definen como trabajar con el lenguaje. Basicamente un grupo de programadores de PHP se reunieron, crearon PHP Fig y definieron esos estandares
PSR-4 hace referencia a que, todos los espacios de nombre deben hacer referrencia hacia la carpeta en donde dichos archivos estan ubicados.
Composer usa este PSR para lograra hacer la autocarga de sus archivos, es decir, ya no temeos que preocuparnos de usar include y require, Composer lo hace por nosotros gracias a PSR-4
Las clases deben llamarse igual que el archivo
El namespace debe ser el nombre de la carpeta donde se encuentra
Gracias por el resumen!
Genial tu explicación, es una suerte que hallas llegado y que completes todos los huecos que habían quedado.
El otro docente se adelantó a enseñar composer sin explicar que es un namespace ni una clase y empezó a testear con PhpUnit. Tal vez su voluntad fue buena pero para mí, falló en el orden de dar los temas, el testeo generalmente se enseña al final no al principio cuando hace dos minutos que aprendiste que es una variable.
Me alegro que hayas tomado la posta, se nota que conocés del tema.
totalmente de acuerdo, fui victima de esto tambien
Estoy de acuerdo, tal vez la parte de testear tú código, debe ser la última que aprendas, puesto que primero para saber testear y qué testear, debes entender cómo funciona tú aplicación y la lógica del lenguaje y del proyecto mismo
Sí te da un error la línea namespace App\... es por que tenes un espacio en blanco antes de la etiqueta PHP.
// --->whitespace<---<?php
namespace HelloWorld?>
Sí lo eliminamos, el error desaparece
<?php
namespace HelloWorld?>
anotado!
Interesante error
Si les interesa saber más sobre PSR les dejo el enlace
Es muy curioso como tienen los estandares incluso para redireccionar
Es interesante saberlo!
En el index tuve que cargar "use function App\Logic\CreateMichis;" para que me funcione o en caso contrario me arroja un error de que CreateMichis() no esta definida, también intenté con composer dump pero, no funciona igual, alguien sabría cuál podría ser el problema?
Yo tuve el mismo error, ya que tenia files en donde no era. La solucion es ponerlo antes del "psr 4
Ahi va un TIP, cuando subes tu código algún repositorio no se debe subir el directorio vendor , ya que se esta usando composer, la persona lo descargue simplemente debe ejecutar composer install en caso de que el proyecto tenga dependencias o composer dump para generar la directorio vendor con el autoload.
pensaba que era composer dum
¿Que es composer du?
*composer dump, los usas si necesitas actualizar tu archivo autoloader porque tienes nuevas clases en el proyecto, movistes directorios, etc
¿Alguien pudo ver este video? El 25 de Julio del 2023 el video esta caído,
Muestra el siguiente mensaje:
"The media could not be loaded, either because the server or network failed or because the format is not supported"
Ya he visto casi todo el curso sin problemas, solo este video esta roto.
no funciona este video, o solo me sucede a mi ?
Con psr-4 apuntando a App no es suficiente para autocargar todos los archivos?
De hecho no, psr-4 según el estandar (https://www.php-fig.org/psr/psr-4/) solo es para cuando tiene namespaces, los archivos (si no son clases con PSR-4) no los va a tener en cuenta.
A mi no me estaba cargargando el autoload a pesar que lo hice igual que mi estimado RETAX.
Al usar __DIR__, estamos obteniendo la ruta absoluta de la carpeta en la que está el archivo index.php, y luego con '/../vendor/autoload.php' estamos subiendo un nivel para ubicar correctamente el archivo autoload.php.
Esto garantiza que, sin importar desde dónde se ejecute el script, siempre buscará el archivo autoload.php en la ruta correcta relativa a index.php.
Espero le sirva a alguien.
No sé a quien le sirva...
En caso de que se encuentren interesados en guardar los archivos que generen con este curso utilizando git, recuerden que es importante el archivo .gitignore, puesto que la carpeta vendor trae mucho archivos e información que no nos interesa guardar en nuestro github.
Creen el archivo en la raíz del proyecto con el nombre .gitignore luego allí copien simplemente la palabra "vendor".
Espero les sirva!
El 25 de Julio del 2023 el video esta caído,
Muestra el siguiente mensaje:
"The media could not be loaded, either because the server or network failed or because the format is not supported"
Ya he visto casi todo el curso sin problemas, solo este video esta roto.
PHP con composer no es el ultimo curso de esta ruta.