No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de PHP con Composer

Curso de PHP con Composer

Profesor Italo Morales F

Profesor Italo Morales F

Cómo iniciar un proyecto

13/19
Recursos

Aportes 54

Preguntas 23

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Una ventaja de composer es que, si tu necesitas migrar tu proyecto a un servidor o a alguna otra computadora, no es necesario que te copies todas las carpetas, de hecho, la carpeta vendor se suele ignorar, esto es porque, al tener el archivo composer.json, simplemente con correr el comando composer install, composer buscará las dependencias y creará la carpeta vendor automáticamente en cualquier máquina que se ejecute.

¿Y qué pasa si dos dependencias distintas requieren de la misma dependencia? ¿Se instala dos veces? No, Composer es tan inteligente que si ve que dos dependencias distintas requieren de una misma dependencia simplemente la instala una sola vez 😄

La instalación de paquetes es muy importante cuando quieran hacer proyectos en frameworks como Laravel.

El comando composer install es muy utilizado, les recomiendo tomar muy en cuenta lo que aprendieron en esta clase.

Cómo iniciar un proyecto


Al igual que la mayoría de gestores de paquetes, Composer también tiene un comando especial para empezar un proyecto con y que este pueda descargar las dependencias que necesitamos de una vez.

composer init

Para instalar las dependencias recuerda utilizar el comando:

composer install

Yo tenía una falsa idea sobre lo que era php, me vendieron que php era un lenguaje con código spaghetti y de malas prácticas. Por lo que me limité a no aprenderlo, y evitar usarlo a toda costa. Pero ahora he crecido profesional y personalmente. He dejado a un lado todos los sesgos y prejuicios que tenía sobre php y he decidido aprenderlo. Gracias profe Italo, por hacer que enamorara de php ahora y enseñarnos composer; herramienta bastante poderosa que hace a php mejor. Nunca pararé de aprender.

👾 Iniciamos composer y realizamos la configuración del proyecto con los siguientes comandos:

composer init
composer install

Master Ítalo, debería dar todas las clase de programación.

Cuando se usa Composer todo gira al rededor del archivo composer.json, para no tener que memorizar toda la estructura que este necesita existe un comando que lo hace más fácil.

El comando composer init nos provee de un generador de el archivo composer.json que nos guiará para la creación de este.

Cuando ingresemos los datos básicos del archivo nos preguntará si queremos definir las dependencias que usaremos en producción, si le decimos que sí nos pedirá que ingresemos el nombre del paquete, luego de poner el nombre nos mostrará una lista de las dependencias que encontró en Composer y debemos seleccionar la que necesitemos. Luego nos pedirá que ingresemos la versión que queremos.

Después de definir las dependencias de producción se repetirá el proceso pero ahora para las dependencias de desarrollo.

Al final del proceso nos pedirá confirmación y procederá a descargar las dependencias que se agregaron.

¡Hay alguna forma de crear el archivo composer.json con la configuración por defecto como se hace por ejemplo en NPM con:
npm init --yes?

Después de esta explicación, composer me queda mas que claro.

ayuda

Lamentablemente composer no me funcionó en mi MAC y visual code studio no se me ve como a ti, muy enredado el curso por lo menos para mi =/

11. Cómo iniciar un proyecto

Existe un comando que sirve como asistente para crear un proyecto:

composer init

Este comando nos va a guiar paso a paso para crear un proyecto de composer.

Como punto y aparte, siento que esto no es tanto una introducción a PHP, porque no hemos visto tipos de variables, cómo funciona PHP, tipos de datos o el tipado, sino que estamos viendo bastante cómo funciona composer.

Este curso me esta abriendo los ojos de muchas cosas que no conocía bien de PHP

Composer es como forge en minecaft mods jajaja

Este es mi composer.json

{
    "name": "holahola/iniciarproyecto",
    "description": "Ejemplo",
    "type": "library",
    "require": {
        "nesbot/carbon": "^2.0@dev",
        "phpunit/phpunit": "^9.5@dev"
    },
    "license": "MIT",
    "authors": [
        {
            "name": "holahola",
            "email": "[email protected]"
        }
    ],
    "minimum-stability": "dev"
}

Y me sale este error al hacer composer install. A que se debe?

$ composer install
Loading composer repositories with package information
Warning from https://repo.packagist.org: You are using an outdated version of Composer. Composer 2.0 is about to be released and the older 1.x releases will self-update directly to it once it is released. To avoid surprises update now to the latest 1.x version which will prompt you before self-updating to 2.x.
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for phpunit/phpunit ^9.5@dev -> satisfiable by phpunit/phpunit[9.5.x-dev].
    - phpunit/phpunit 9.5.x-dev requires ext-dom * -> the requested PHP extension dom is missing from your system.

  To enable extensions, verify that they are enabled in your .ini files:
    - /etc/php/7.4/cli/php.ini
    - /etc/php/7.4/cli/conf.d/10-opcache.ini
    - /etc/php/7.4/cli/conf.d/10-pdo.ini
    - /etc/php/7.4/cli/conf.d/20-calendar.ini
    - /etc/php/7.4/cli/conf.d/20-ctype.ini
    - /etc/php/7.4/cli/conf.d/20-exif.ini
    - /etc/php/7.4/cli/conf.d/20-ffi.ini
    - /etc/php/7.4/cli/conf.d/20-fileinfo.ini
    - /etc/php/7.4/cli/conf.d/20-ftp.ini
    - /etc/php/7.4/cli/conf.d/20-gettext.ini
    - /etc/php/7.4/cli/conf.d/20-iconv.ini
    - /etc/php/7.4/cli/conf.d/20-json.ini
    - /etc/php/7.4/cli/conf.d/20-mbstring.ini
    - /etc/php/7.4/cli/conf.d/20-phar.ini
    - /etc/php/7.4/cli/conf.d/20-posix.ini
    - /etc/php/7.4/cli/conf.d/20-readline.ini
    - /etc/php/7.4/cli/conf.d/20-shmop.ini
    - /etc/php/7.4/cli/conf.d/20-sockets.ini
    - /etc/php/7.4/cli/conf.d/20-sysvmsg.ini
    - /etc/php/7.4/cli/conf.d/20-sysvsem.ini
    - /etc/php/7.4/cli/conf.d/20-sysvshm.ini
    - /etc/php/7.4/cli/conf.d/20-tokenizer.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.```

a lo que escribo el comando composer install me sale este error: ayuda

Do not run Composer as root/super user! See https://getcomposer.org/root for details
Loading composer repositories with package information
Warning from https://repo.packagist.org: You are using an outdated version of Composer. Composer 2.0 is now available and you should upgrade. See https://getcomposer.org/2
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Installation request for phpunit/phpunit ^9.5@dev -> satisfiable by phpunit/phpunit[9.5.x-dev].
- phpunit/phpunit 9.5.x-dev requires ext-dom * -> the requested PHP extension dom is missing from your system.

To enable extensions, verify that they are enabled in your .ini files:
- /etc/php/7.4/cli/php.ini
- /etc/php/7.4/cli/conf.d/10-opcache.ini
- /etc/php/7.4/cli/conf.d/10-pdo.ini
- /etc/php/7.4/cli/conf.d/20-calendar.ini
- /etc/php/7.4/cli/conf.d/20-ctype.ini
- /etc/php/7.4/cli/conf.d/20-exif.ini
- /etc/php/7.4/cli/conf.d/20-ffi.ini
- /etc/php/7.4/cli/conf.d/20-fileinfo.ini
- /etc/php/7.4/cli/conf.d/20-ftp.ini
- /etc/php/7.4/cli/conf.d/20-gettext.ini
- /etc/php/7.4/cli/conf.d/20-iconv.ini
- /etc/php/7.4/cli/conf.d/20-json.ini
- /etc/php/7.4/cli/conf.d/20-mbstring.ini
- /etc/php/7.4/cli/conf.d/20-phar.ini
- /etc/php/7.4/cli/conf.d/20-posix.ini
- /etc/php/7.4/cli/conf.d/20-readline.ini
- /etc/php/7.4/cli/conf.d/20-shmop.ini
- /etc/php/7.4/cli/conf.d/20-sockets.ini
- /etc/php/7.4/cli/conf.d/20-sysvmsg.ini
- /etc/php/7.4/cli/conf.d/20-sysvsem.ini
- /etc/php/7.4/cli/conf.d/20-sysvshm.ini
- /etc/php/7.4/cli/conf.d/20-tokenizer.ini
You can also run php --ini inside terminal to see which files are used by PHP in CLI mode.

Y yo arrancando un proyecto y creando /assets /src /js /css toda la vida a mano, ver esto es amor-odio 😃

composer init == npm init

Para iniciar un proyecto vamos a la terminal y usamos el comando

composer init

Excelente clase!!!

Antes de composer init es necesario que ya hayas iniciado tu configuración con git para que la detecte composer
A continuación, te proporciono una tabla con algunos de los comandos de Composer más utilizados y una breve descripción de cada uno de ellos: | Comando | Descripción | |------------------------------|-------------------------------------------------------| | `composer install` | Instala las dependencias definidas en `composer.json` en un proyecto. | | `composer update` | Actualiza las dependencias a las últimas versiones compatibles. | | `composer require package` | Agrega un nuevo paquete como dependencia al proyecto. | | `composer remove package` | Elimina un paquete y lo quita de las dependencias del proyecto. | | `composer show` | Muestra información detallada sobre las dependencias del proyecto. | | `composer dump-autoload` | Vuelve a generar el archivo `autoload.php` para cargar automáticamente las clases. | | `composer self-update` | Actualiza Composer a la última versión disponible. | | `composer create-project` | Crea un nuevo proyecto basado en una plantilla específica. | | `composer require --dev package` | Agrega un paquete como dependencia de desarrollo. | | `composer install --no-dev` | Instala las dependencias omitiendo las de desarrollo. | | `composer update package` | Actualiza un paquete específico a su última versión compatible. | | `composer config` | Configura opciones de Composer, como repositorios y autenticación. | | `composer validate` | Valida el archivo `composer.json` en busca de errores y advertencias. | Estos son algunos de los comandos más utilizados en Composer, y cada uno tiene un propósito específico en la administración de dependencias en proyectos PHP. Ten en cuenta que hay más comandos y opciones disponibles en Composer para satisfacer diversas necesidades de desarrollo.

Para alguien que está empezando en el backend y que sólo se ha visto los cursos de php siguiendo la ruta de Platzi, este curso de Composer se siente muy avanzado y arbitrario en el uso de los nuevos conceptos. ¿Alguno cree que es mejor ver nodejs y luego volver aquí?

Para la gente que viene de NodeJS, la carpeta vendor es similar a la carpeta de node_modules, la cual no es lo ideal que se suba a un repositorio.

Las bases bien claras, excelente explicación

composer init

Package name = (nombre del usuario / nombre del proyecto)

Description = Una breve descripción del proyecto

Author = Nombre y correo del autor del proyecto

Minimum Stability = dependiendo de la fase del proyecto en la que te encuentres, puedes colocar dev, alpha, beta.

Package Type = Podemos dejarlo vacío pero podemos marcar qué tipo de proyecto es (library, project, metapackage, composer-plugin)

License = Tipo de licencia a implementar (Puedes colocar MIT cuando sea un proyecto open source)

Excelente clase, en las otras estaba un poco más perdido, pero esta sin duda alguna estuvo mejor.

Lo malo seria que tu proyecto puede ser de 2 mb pero tu vendor de 1gb con tanta profundidad de dependecias no me sorprenderia qie esto pasara
Vengo de nodejs y siento que esto ya lo vi antes xD

Ya había visto este archivo composer.json, pero ahora es muy interesante saber el porque de su existencia y como se origina.

Microsoft Windows [Versión 10.0.18363.1316]
© 2019 Microsoft Corporation. Todos los derechos reservados.

C:\xampp\htdocs\nikolascantilloo>composer init

Welcome to the Composer config generator

This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [eco truly udsa per/nikolascantilloo]:
The package name eco truly udsa per/nikolascantilloo is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+
Package name (<vendor>/<name>) [eco truly udsa per/nikolascantilloo]:

|| Instalación de dependencias desde la consola
Require permite Descargar las dependencias, utilizando --dev descargamos dependencias en el entorno de desarrollo.
Por otra parte remove permite sacar paquetes del proyecto.
Los paquetes eran nombrados con la siguiente estructura proveedor/paquete.
|| Crear configuración inicial desde la consola.
Para iniciar un proyecto se usa composer init
Después todo es muy intuitivo solamente hay que rellenar los datos.
Primera se muestran las dependencias y después los paquetes que se utilizarán para desarrollar.
Para instalar dependencias composer install

ESTE ES MI ARCHIVO JSON:

{
    "name": "oficina/php-composer",
    "description": "Ejemplo composer",
    "type": "proyecto-caturnio",
    "license": "MIT",
    "autoload": {
        "psr-4": {
            "Oficina\\PhpComposer\\": "src/"
        }
    },
    "authors": [
        {
            "name": "Ing. Nelson Gonzalez",
            "email": "[email protected]"
        }
    ],
    "minimum-stability": "dev",
    "require": {}
}

Que genial esta clase!
Me preguntaba en que parte ibamos a usar git, ahora entiendo por que lo descargamos.

Alguien que me ayude? ):
Según yo no me deja crear nada porque mi carpeta de usuario es hugo_ (no se por qué, me la dieron en el trabajo) y parece ser que no me reconoce el ‘_’, porque cuando lo quito me deja de marcar error. Además me mandó el archivo de composer.lock. Seguí todos los pasos. Alguien tiene alguna solución?

no entiendo nada

Muchas gracias! muy claro.

would you like to define your dependecies (require) interactively
Deseas definir tus dependencias (obligatorias o requeridas) interactivamente??

would you like to define your dependecies (require-dev) interactively
Deseas definir tus dependencias (obligatorias o requeridas de desarrollo) interactivamente??

Gracias Italo.

Muy útil composer para iniciar un proyecto, me queda muy claro su valor, ya estoy planeando cómo incorporarlo a un proyecto php que no lo tiene y organizarlo mejor.

Gracias Italo, me han gustado mucho estas clases de Composer. He aprendido mucho.

Excelente

He aprendido un monton!

Composer init, justo como en git. Coincidencia o destino?

A partir de que version de php se usa composer, ¿puedo usarla en proyectos de php5?

Muy bien explicado por parte de Italo. Hasta empiezo a entender un poco el funcionamiento y la utilidad de Composer

Tengo una duda.

Cuando le di composer install a mi proyecto obtuve el siguiente mensaje: No lock file found. Updating dependencies instead of installing from lock file. Use composer update over composer install if you do not have a lock file.

Se creo el fichero composer.lock

¿Para qué sirve?

Al momento de ejecutar composer install se copia el codigo fuente (que está en github) directamente a nuestra carpeta vendor? Eso es lo que imagino que hace o hay algun cambio adicional a ese código?

Error al crear el nuevo proyecto desde termianl

Excelente explicación, cientos de veces de usar composer pero nunca había puesto atención en la creación de los paquetes que se usan…