composer

Instalar composer en Linux Ubuntu

En este post voy a explicar cómo instalar Composer, el gestor de dependencias de PHP, en Linux Ubuntu.

Composer sirve principalmente para instalar las dependencias de un proyecto de PHP, por ejemplo, Laravel. Solo se deben definir las dependencias en un archivo, y el instalador se encargará de descargarlas y ponerlas en un autoload que simplemente debemos incluir.

Nota: ya existe un tutorial para Windows.

Continue reading…

Instalar dependencias pero evitar las de desarrollo o dev - Laravel y Composer

Pequeño truco para reducir el tamaño de vendor en Laravel

A más de un programador de Laravel le ha pasado esto: ha terminado el proyecto, pasado las pruebas y está listo para enviarlo a producción pero pasa algo: la carpeta vendor tiene un tamaño realmente grande.

Esto es porque la carpeta vendor tiene todos los paquetes que necesita el framework, pero hay unos de ellos que solamente son usados en modo desarrollo y que no son necesarios en producción.

Instalar dependencias pero evitar las de desarrollo o dev - Laravel y Composer

Instalar dependencias pero evitar las de desarrollo o dev – Laravel y Composer

Por eso es que hoy veremos cómo eliminar los paquetes innecesarios de vendor, o mejor dicho, cómo instalar únicamente los necesarios.

Continue reading…

Adaptar proyecto de PHP a Composer

Composer se ha convertido en el gestor de dependencias más usado en PHP. Puede que nuestro proyecto de PHP existente no necesitara un gestor al inicio, pero ahora lo necesita. O tal vez necesitamos instalar una librería que usa composer.

Por ello es que hoy veremos cómo adaptar un proyecto normal de PHP a un proyecto gestionado por composer.

Continue reading…

Solución al error No such file or directory autoload.php | Laravel

Introducción

Laravel utiliza Composer para gestionar todas sus dependencias. Si acabamos de clonar un repositorio o estamos comenzando un proyecto, puede que salga un error que dice algo así:

Warning: require(ruta\proyecto\public/../vendor/autoload.php failed to open stream: No such file or directory in ruta\proyecto.

Y abajo algo así:

Fatal error: require(): Failed opening required…

La solución es muy sencilla.

Solución

Lo que dice el error es que no encuentra el archivo autoload.php. Este archivo es generado por composer y se encarga de cargar las clases y ficheros que nuestro proyecto necesita.

Si no lo tienes, puedes instalarlo aquí: Instalar composer.

Si ya tenemos composer, sólo tenemos que navegar hasta la raíz de nuestro proyecto desde la terminal y ejecutar:

composer install

Así lo he hecho yo:

Esto empieza a descargar las dependencias y generará automáticamente el archivo autoload.php. De esta manera, el problema tendría que desaparecer.

Si sigues teniendo problemas, igual y quieras pasarte por este post para saber qué hacer después de clonar un proyecto de Laravel.

 

Cargar nuestras propias clases con Composer

Introducción

Al principio, no queremos utilizar Composer porque creemos que es muy complicado de utilizar. Hoy explicaré 2 cosas: cómo cargar nuestras clases y por qué es bueno utilizar Composer

¿Por qué es bueno?

Composer es un gestor de dependencias como lo es NPM. Ambos trabajan igual: leen un fichero, instalan y actualizan las dependencias. Fácil y sencillo. Por otro lado, Composer se encarga de cargar todas las clases necesarias.

Por ejemplo, si tenemos muchas librerías sería un lío hacer un include o require por cada una de éstas. ¿No sería mejor que alguien las cargara todas por nosotros? eso es justamente lo que hace el autoload de Composer.

Hasta aquí todo bien, todos lo entendemos. Lo que se me hace un poco complicado es cómo cargar nuestras propias clases. Es decir, está muy bien eso de que se carguen las clases que otros desarrolladores hicieron, ¿pero cómo añado la lógica de mi aplicación? eso se responde en el siguiente apartado

¿Cómo cargar nuestro propio código?

Esto es muy fácil, simplemente tenemos que indicarle a Composer en dónde reside nuestro código que queremos que se autocargue. Tenemos que modificar el archivo composer.json. Dicho fichero se verá más o menos así:

En este caso es de un proyecto que estoy haciendo, pero dejemos eso a un lado. Independientemente de lo que tengamos, vamos a añadir lo siguiente:

Para que finalmente, el archivo (al menos en mi caso) luzca así:

Como se puede observar, el namespace en mi caso es Biblioteca. Es necesario añadir las dos diagonales \\.

Y en carpeta he puesto “app/” porque así se llama el folder en donde tengo todo mi código. Se ve así:

De esta forma, el archivo composer.json buscará todo lo que haya dentro de la carpeta app. Y dentro de la carpeta tengo otras dos carpetas. El código de un controlador, por ejemplo, luce así:

Lo copié de esta manera porque quiero que se note que podemos utilizar nuestras otras clases (por ejemplo, tengo una clase llamada DatabaseService) simplemente utilizando use namespace\clase.

Por otro lado, estoy utilizando PDO. Si necesitamos utilizar una clase que ya viene incluida por defecto en PHP tenemos que indicarlo; si no, avisará que no encuentra la clase en nuestro namespace.

Finalmente dejo aquí el código de ejemplo de cómo se ve DatabaseService.

Recargar autoload

Después de modificar el archivo composer.json debemos generar el autoload de nuevo. Para ello ve a la ubicación en donde esté el archivo a través de la terminal y ejecuta:

composer install

Conclusión

Si seguimos todo esto, podremos estructurar nuestro código de una manera eficaz, y será cargado / incluido automáticamente. Más tarde podemos agregar más archivos a la carpeta que indicamos y todo se seguirá cargando siempre y cuando respetemos los namespaces.

En los ejemplos el namespace es “Biblioteca” pero puede ser el que se te ocurra, aunque debería llamarse de alguna forma referente a tu proyecto.