[l-desarrollo] Obtener dependencias PHP

0 views
Skip to first unread message

Alberto Mijares

unread,
Sep 23, 2015, 2:11:58 PM9/23/15
to Aplicaciones y Desarrollo en Linux
Hola lista,

¿Alguien sabe cómo puedo obtener la lista de dependencias PHP en una
aplicación? La idea no es correrla y ver los logs de apache hasta que
no de errores, sino obtener esa lista de dependencias a priori ;-)

Si hay un servicio web o se puede instalar un especie de sandbox que
te de esa información, o correr algún script, les agradezco que pasen
el dato.

Gracias de antemano.

Saludos


Alberto Mijares

_______________________________________________
l-desarrollo mailing list
l-desa...@velug.org.ve
http://listas.velug.org.ve/mailman/listinfo/l-desarrollo

Daniel Peraza

unread,
Sep 23, 2015, 2:19:32 PM9/23/15
to Aplicaciones Linux
No he escuchado nunca de algo similar. En todo caso el manejo de dependencias debería hacerse desde el mismo inicio del proyecto utilizando Composer.

Buscando un poco en google lo que más parecido me sonó fue esto:

Alberto Mijares

unread,
Sep 23, 2015, 2:43:41 PM9/23/15
to Aplicaciones y Desarrollo en Linux
2015-09-23 13:48 GMT-04:30 Daniel Peraza <daniel...@gmail.com>:
> No he escuchado nunca de algo similar. En todo caso el manejo de
> dependencias debería hacerse desde el mismo inicio del proyecto utilizando
> Composer.

Tienes razón, ojalá lo hubieran hecho así.

>
> Buscando un poco en google lo que más parecido me sonó fue esto:
> http://blog.fedecarg.com/2009/02/01/zend-framework-automatic-dependency-tracking/
>

Gracias. Seguramente lo que yo quiero no existe porque se supone que
las dependencias deben estar documentadas o manejadas por Composer,
como bien dices.

Leonardo Caballero

unread,
Sep 23, 2015, 3:08:43 PM9/23/15
to Aplicaciones y Desarrollo en Linux
Hola Alberto

Actualmente yo uso composer (https://getcomposer.org) para proyectos con Yii Framework empaquetando aplicaciones de los proyectos php y me va genial por que describe no solo que dependencias vas a utilizar, sino en perfiles de desarrollo, producción, te permite hacer post-install, te permite repos públicos (https://packagist.org/) o tus propios repos privados y tratarlo como sistema de paquetes Debian, creo que para ti la opción mas adecuada es composer.

Saludos
--
Atentamente

Ing. Leonardo  J. Caballero G.
Linux Counter ID = https://linuxcounter.net/user/369081.html

Alberto Mijares

unread,
Sep 23, 2015, 6:02:56 PM9/23/15
to Aplicaciones y Desarrollo en Linux
2015-09-23 14:38 GMT-04:30 Leonardo Caballero <leonardo...@gmail.com>:
> Hola Alberto
>
> Actualmente yo uso composer (https://getcomposer.org) para proyectos con Yii
> Framework empaquetando aplicaciones de los proyectos php y me va genial por
> que describe no solo que dependencias vas a utilizar, sino en perfiles de
> desarrollo, producción, te permite hacer post-install, te permite repos
> públicos (https://packagist.org/) o tus propios repos privados y tratarlo
> como sistema de paquetes Debian, creo que para ti la opción mas adecuada es
> composer.
>
> Saludos
>


Leonardo, muchas gracias. La situación es que tengo un aplicativo
desarrollado en PHP y debo ponerlo en marcha. No está documentado y
los desarrolladores no usaron composer ni nada por el estilo. Como yo
desconozco ese lenguaje, quería saber si había una forma fácil.

Si estuviera hecho en Perl, bastaría con una instrucción como

$ grep -R '^use ' *

en la raíz de la estructura de directorios, y tendría una idea
bastante clara de cuáles son las dependencias Perl en el aplicativo.
Digo esto como una referencia de lo que necesito.

Si un día me veo en la necesidad de hacer algo en PHP, tomaré en
cuenta tu consejo.

Angel Leon

unread,
Sep 23, 2015, 6:40:57 PM9/23/15
to Aplicaciones y Desarrollo en Linux
egrep -R "^(include|require)" *

Alberto Mijares

unread,
Sep 23, 2015, 6:48:33 PM9/23/15
to Aplicaciones y Desarrollo en Linux
2015-09-23 18:10 GMT-04:30 Angel Leon <guba...@gmail.com>:
> egrep -R "^(include|require)" *
>


No es lo mismo ;-)

Daniel Peraza

unread,
Sep 23, 2015, 7:08:48 PM9/23/15
to Aplicaciones y Desarrollo en Linux
Yo pensaría en buscar el autoloader y modificarlo para loggear la lista de archivos cargados, el problema es tendrás que ejecutarla y al momento de no encontrar alguna clase, seguirás teniendo errores, por lo que quedas en las mismas.

Por otra parte si usas relfection, podrías generar en runtime implementaciones de las clases faltantes, y detectar cuáles son. Pero aún así tendrías problemas, razón por la cual no sugerí esto al principio.

Tal vez tu mejor opción sea hacer un grep para buscar las apariciones del operador new y ver cuáles clases se están instanciando.

Leonardo Caballero

unread,
Sep 24, 2015, 12:28:41 AM9/24/15
to Aplicaciones y Desarrollo en Linux
Hola Alberto

Entiendo lo que debes hacer tiene dos dos posibles soluciones

1) Definir las dependencias, aquí reusas los paquetes PHAR usando composer como gestor de dependencias de paquetes desde el repo https://packagist.org/ en esta proceso debes crear manualmente o con el asistente de composer el archivo composer.json que describe las dependencias. En este caso puedes reusar los paquetes ya existente en el repo packagist. Las instrucciones de como construirlo esta acá https://packagist.org/

2) Crear paquetes PHAR, aquí debes crear el archivo composer.json  manualmente o con el asistente de composer para definir el paquete y sus dependencias, en este caso puedes agregar al indice packagist tu paquete desde un repo git/svn, etc. Las instrucciones de como construirlo esta acá https://packagist.org/

Muchas librerías del proyecto se distribuyan en un archivo bundle, mas con esto las he podido reusar de paquetes existentes o empaqueta algunas para aprovechar la magia del sistema de paquete como PHAR con la herramienta composer.

Luego que lo generas es muy genial de construye las dependencias, BD, configuraciones de Vhost apache, con post-install, etc.

Leonardo Caballero

unread,
Sep 24, 2015, 12:49:11 PM9/24/15
to Aplicaciones y Desarrollo en Linux
Hola Alberto

Para entender el detalle de como adoptar composer lee este articulo http://phpenthusiast.com/blog/how-to-use-packagist-and-composer
Reply all
Reply to author
Forward
0 new messages