Composer también permite instalar paquetes a partir de cualquier canal de PEAR mediante el tipo de repositorio pear
. Para evitar problemas, los nombres de estos paquetes se prefijan con pear-{nombre_del_canal}/
y también se les añade el alias pear-{nombre_del_canal}/
. Ejemplo de configuración para paquetes descargados desde el canal pear2.php.net
:
{
"repositories": [
{
"type": "pear",
"url": "http://pear2.php.net"
}
],
"require": {
"pear-pear2.php.net/PEAR2_Text_Markdown": "*",
"pear-pear2/PEAR2_HTTP_Request": "*"
}
}
En este caso, el nombre corto del canal es pear2
, así que el paquete PEAR2_HTTP_Request
en realidad se llamará pear-pear2/PEAR2_HTTP_Request
.
Nota Los repositorios pear
requieren varias peticiones para descargar cada paquete, por lo que el proceso de instalación es muy lento.
6.5.1. Creando un alias propio
Si lo necesitas, es posible crear un alias para los paquetes de los canales PEAR basado en el nombre del propio creador del paquete. Imagina que dispones de un repositorio PEAR privado y quieres descargar de él varios paquetes mediante Composer. Si el repositorio PEAR dispone de los siguientes paquetes:
BasePackage
IntermediatePackage
, que depende deBasePackage
TopLevelPackage1
yTopLevelPackage2
que dependen los dos deIntermediatePackage
Si no utilizas un alias, Composer aisgna el nombre del canal PEAR como creador de cada paquete:
pear-pear.foobar.repo/BasePackage
pear-pear.foobar.repo/IntermediatePackage
pear-pear.foobar.repo/TopLevelPackage1
pear-pear.foobar.repo/TopLevelPackage2
Imagina ahora que quieres migrar tus paquetes PEAR a un repositorio de Composer y quieres utilizar foobar
como nombre del creador de los paquetes. Los proyectos que utilizan los paquetes PEAR no verán estos cambios, ya que utilizan un valor diferente como creador (pear-pear.foobar.repo/IntermediatePackage
en vez de foobar/IntermediatePackage
).
Si desde el principio hubieras asignado un valor a la propiedad vendor-alias
del repositorio PEAR, te habrías ahorrado todos estos problemas y estarías preparado para los cambios futuros.
El siguiente ejemplo muestra cómo obtener los paquetes BasePackage
,
TopLevelPackage1
y TopLevelPackage2
desde un repositorio PEAR y el paquete IntermediatePackage
desde un repositorio de Github:
{
"repositories": [
{
"type": "git",
"url": "https://github.com/foobar/intermediate.git"
},
{
"type": "pear",
"url": "http://pear.foobar.repo",
"vendor-alias": "foobar"
}
],
"require": {
"foobar/TopLevelPackage1": "*",
"foobar/TopLevelPackage2": "*"
}
}