Diferencia entre revisiones de «Usuario:ManuelRomero/composer»
De WikiEducator
(→Composer) |
|||
(11 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 51: | Línea 51: | ||
*Vamos a trabajar con una estructura compleja de directorios en un proyecto. | *Vamos a trabajar con una estructura compleja de directorios en un proyecto. | ||
*Supongamos la siguiente estructura de clases en nuestro proyecto como se especifica en la imagen | *Supongamos la siguiente estructura de clases en nuestro proyecto como se especifica en la imagen | ||
− | [[Archivo:estructura_clases_ej2.png| | + | [[Archivo:estructura_clases_ej2.png|600px|center]] |
</div><div class="slide"> | </div><div class="slide"> | ||
<br /> | <br /> | ||
;Estructura de directorios ejemplo | ;Estructura de directorios ejemplo | ||
*Este ejemplo implica la siguiente estructura de directorios y las clases correspondientes | *Este ejemplo implica la siguiente estructura de directorios y las clases correspondientes | ||
− | [[Archivo:implementacion_ficheros1.png| | + | [[Archivo:implementacion_ficheros1.png|180px]] |
</div><div class="slide"> | </div><div class="slide"> | ||
;Estructura de directorios ejemplo | ;Estructura de directorios ejemplo | ||
Línea 289: | Línea 289: | ||
?> | ?> | ||
</source> | </source> | ||
− | </div><div class="slide" | + | </div> |
− | + | <div class="slide"> | |
;controlador/ca.php | ;controlador/ca.php | ||
<source lang=php> | <source lang=php> | ||
Línea 303: | Línea 303: | ||
?> | ?> | ||
</source> | </source> | ||
− | </div | + | </div> |
<div class=slide> | <div class=slide> | ||
;controlador/cb.php | ;controlador/cb.php | ||
Línea 317: | Línea 317: | ||
?> | ?> | ||
</source> | </source> | ||
− | </div><div class="slide"> | + | </div> |
+ | <div class="slide"> | ||
;Index.php | ;Index.php | ||
<source lang=php> | <source lang=php> | ||
Línea 357: | Línea 358: | ||
<source lang=php> | <source lang=php> | ||
//Y procedemos a visualizarlos | //Y procedemos a visualizarlos | ||
+ | echo $a; | ||
+ | echo $b; | ||
+ | echo $c; | ||
+ | echo $a_comun; | ||
+ | echo $e_comun; | ||
+ | echo $a_p; | ||
+ | echo $e_p; | ||
+ | echo $c_c; | ||
+ | echo $c_a; | ||
+ | echo $c_b; | ||
+ | echo $c_a_comun; | ||
+ | echo $c_b_comun; | ||
</source> | </source> | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
+ | ;Empleo de use | ||
*Vemos como hemos conseguido solventar el tema de clases con el mismo nombre | *Vemos como hemos conseguido solventar el tema de clases con el mismo nombre | ||
*Podemos evitar tener que referenciar toda la estructura de namespace al instanciar una clase | *Podemos evitar tener que referenciar toda la estructura de namespace al instanciar una clase | ||
*Para ello usaremos la palabra reservada '''''use''''' | *Para ello usaremos la palabra reservada '''''use''''' | ||
https://www.php.net/manual/es/language.namespaces.importing.php | https://www.php.net/manual/es/language.namespaces.importing.php | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ;Empleo de use | ||
*En el ejemplo anterior | *En el ejemplo anterior | ||
<source lang=php> | <source lang=php> | ||
Línea 370: | Línea 387: | ||
//.... | //.... | ||
use Librerias\Comunes\A; | use Librerias\Comunes\A; | ||
− | |||
$a = new A(); | $a = new A(); | ||
</source> | </source> | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
+ | ;Empleo de use | ||
*También podríamos cambiar crear un alias | *También podríamos cambiar crear un alias | ||
<source lang=php> | <source lang=php> | ||
Línea 383: | Línea 401: | ||
$a = new mi_A(); | $a = new mi_A(); | ||
− | + | ?> | |
+ | </source> | ||
</div> | </div> | ||
Línea 390: | Línea 409: | ||
*Cada namespace referencia a una ubicación en un directorio | *Cada namespace referencia a una ubicación en un directorio | ||
*No tiene por qué coincidir el namespace con el nombre de directorio, Suele coincidir, pero no hay ningún tipo de dependencia | *No tiene por qué coincidir el namespace con el nombre de directorio, Suele coincidir, pero no hay ningún tipo de dependencia | ||
− | } | + | }} |
*Una vez establecido un namespace en una clase, para acceder a él debemos de referenciarlo en su ubicación | *Una vez establecido un namespace en una clase, para acceder a él debemos de referenciarlo en su ubicación | ||
*Podemos crear un alias con la palabra reservada Use | *Podemos crear un alias con la palabra reservada Use | ||
</div> | </div> | ||
− | + | <div class=slide> | |
− | * | + | ===Composer=== |
− | * | + | *Ahora vamos a ver cómo composer puede solucionar la autocarga |
− | + | *El objetivo será delegar en composer la carga de los ficheros que contienen las clases | |
− | + | *Vamos a ver dos técnicas, aunque hay más | |
− | + | ;classmap | |
− | + | ;psr-4 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</div> | </div> | ||
− | + | ;composer | |
− | + | ||
− | + | ||
− | + | ||
<br /> | <br /> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
{{MRM_Previos| | {{MRM_Previos| | ||
*Tener instalado composer. | *Tener instalado composer. | ||
+ | *Visitar la página de composer | ||
+ | *Es muy fácil de instalar | ||
+ | {{MRM_Web| | ||
+ | https://getcomposer.org/ | ||
+ | }} | ||
}} | }} | ||
+ | </div> | ||
+ | |||
===composer.json=== | ===composer.json=== | ||
+ | *Para especifivar la autocarga, usaremos el | ||
===Ubicar las clases en nuestro proyecto=== | ===Ubicar las clases en nuestro proyecto=== | ||
===El namespace=== | ===El namespace=== | ||
Línea 441: | Línea 441: | ||
===Usando las clases en nuestro proyecto=== | ===Usando las clases en nuestro proyecto=== | ||
</div> | </div> | ||
+ | {{MRM_Web|Title=referencias| | ||
+ | https://getcomposer.org/doc/04-schema.md#psr-4 | ||
+ | https://www.php-fig.org/psr/psr-4/ | ||
+ | https://thewebtier.com/php/what-are-namespaces-in-php/ | ||
+ | https://thewebtier.com/php/psr4-autoloading-php-files-using-composer/ | ||
+ | }} | ||
+ | |||
</div > | </div > |
Última revisión de 05:10 15 abr 2021
https://medium.com/swlh/composer-everything-i-should-have-known-794225cde691
composer.json
- Para especifivar la autocarga, usaremos el
Ubicar las clases en nuestro proyecto
El namespace
- Los espacios de nombres realmente ayudan a organizar su código y a evitar conflictos de nombres dentro de la base de código de su proyecto.
Actualizar/Instalar composer en nuestro proyecto
Usando las clases en nuestro proyecto
</div >