Diferencia entre revisiones de «Usuario:ManuelRomero/composer»
De WikiEducator
(→psr-4) |
(→La autocarga) |
||
Línea 7: | Línea 7: | ||
[[Archivo:estructura_clases_ej2.png|center]] | [[Archivo:estructura_clases_ej2.png|center]] | ||
<br /> | <br /> | ||
− | Este ejemplo implica la siguiente estructura de directorios | + | *Este ejemplo implica la siguiente estructura de directorios y las clases correspondientes |
− | + | [[Archivo:implementacion_ficheros.png|center]] | |
+ | *En cada fichero vamos a escribir el método mágico __toString() para que nos diga el nombre de la clase y el directorio en el que nos encontramos | ||
+ | <source lang=php> | ||
+ | public function __toString() | ||
+ | { | ||
+ | // TODO: Implement __toString() method. | ||
+ | return "<h2>Estoy en la clase " . get_class ($this) . " ubicado en " . __DIR__; | ||
+ | } | ||
+ | </source> | ||
+ | *La función get_class($obj) retorna el nombre de la la clase de un objeto | ||
+ | https://www.php.net/manual/es/function.get-class.php | ||
+ | *La constante __DIR__ da el nombre del directorio dónde se ubica el fichero que invocamos | ||
+ | https://www.php.net/manual/es/language.constants.predefined.php | ||
+ | *El objetivo es instanciar un objeto de cada clase y probarlo | ||
+ | *Lo hacemos con objetos ubicados en libreria | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | require "./librerias/A.php"; | ||
+ | require "./librerias/B.php"; | ||
+ | require "./librerias/C.php"; | ||
+ | $a = new A(); | ||
+ | $b = new B(); | ||
+ | $c = new C(); | ||
+ | echo $a; | ||
+ | echo $b; | ||
+ | echo $c;> | ||
+ | </source> | ||
+ | *Y vemos la siguiente salida | ||
+ | [[Archivo:salida_ej1.png]] | ||
Revisión de 04:36 30 abr 2020
https://medium.com/swlh/composer-everything-i-should-have-known-794225cde691
Contenido
La autocarga
- La programación actual es claramente estructurada-modular programando con el paradigma orientado a objetos (existen otros paradigmas)
- PHP es un lenguaje para programar orientado a objetos
- Las buenas prácticas de programación nos llevan a crear diferentes objetos estructurados en distintas carpetas implementadas en ficheros independientes.
- Para este tema, supongamos la siguiente estructura de clases en nuestro proyecto
- Este ejemplo implica la siguiente estructura de directorios y las clases correspondientes
- En cada fichero vamos a escribir el método mágico __toString() para que nos diga el nombre de la clase y el directorio en el que nos encontramos
public function __toString() { // TODO: Implement __toString() method. return "<h2>Estoy en la clase " . get_class ($this) . " ubicado en " . __DIR__; }
- La función get_class($obj) retorna el nombre de la la clase de un objeto
https://www.php.net/manual/es/function.get-class.php
- La constante __DIR__ da el nombre del directorio dónde se ubica el fichero que invocamos
https://www.php.net/manual/es/language.constants.predefined.php
- El objetivo es instanciar un objeto de cada clase y probarlo
- Lo hacemos con objetos ubicados en libreria
<?php require "./librerias/A.php"; require "./librerias/B.php"; require "./librerias/C.php"; $a = new A(); $b = new B(); $c = new C(); echo $a; echo $b; echo $c;>
- Y vemos la siguiente salida
===Concepto de namespace
Autocarga con composer
clasmap
psr-4
psr-4, composer y php
En este apartado vamos a exponer como realizar la carga de forma automática de clases en nuestro proyecto php¡¡ |
composer.json
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.