Como instalar librerias externas en un proyecto Symfony 2.

494 views
Skip to first unread message

lmdz

unread,
Nov 14, 2014, 11:09:13 AM11/14/14
to symfo...@googlegroups.com
Cual es la manera correcta de instalar o agregar un libreria externa a nuestro proyecto symfony 2. Por ejemplo, quiero utilizar la libreria EasyRDF e instalarla utilizando composer.

Gracias

Roberto Moreno P.

unread,
Nov 15, 2014, 8:39:14 AM11/15/14
to symfo...@googlegroups.com
Tal como dice aqui


La diferencia es que en vez de crear el composer.json lo agregas al ya existente

Saludos

El 14 de noviembre de 2014, 13:09, lmdz <leandr...@gmail.com> escribió:
Cual es la manera correcta de instalar o agregar un libreria externa a nuestro proyecto symfony 2. Por ejemplo, quiero utilizar la libreria EasyRDF e instalarla utilizando composer.

Gracias

--
--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es

---
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a symfony-es+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Roberto Andrés Moreno Pérez

lmdz

unread,
Nov 15, 2014, 10:37:40 AM11/15/14
to symfo...@googlegroups.com, rmo...@gmail.com
Estimado Roberto, gracias por su respuesta. Le comento lo que he realizado siguiendo la documentacion de EasyRdf. 
Como esta libreria puede instalarse a traves de composer, entonces he realizado lo siguiente:

>php composer.phar require easyrdf/easyrdf

Con este comando, se modifica el archivo composer.json agregando en la seccion require la libreria easyrdf, luego se descarga la libreria creando una nueva carpeta en /vendor.
Hasta aqui todo bien, lo que no se que debo hacer para poder utilizar una clase de esta libreria en otro lado, or ejemplo un controller, ya que la clase no es encontrada.

Saludos

Roberto Moreno P.

unread,
Nov 15, 2014, 10:46:46 AM11/15/14
to lmdz, symfo...@googlegroups.com, Roberto Andres Moreno Pérez
Leandro,

¿Agregaste la clase en el AppKernel?

Saludos

lmdz

unread,
Nov 15, 2014, 11:12:09 AM11/15/14
to symfo...@googlegroups.com, leandr...@gmail.com, rmo...@gmail.com
No he modificado el archivo app/AppKernel.php porque esta libreria no es un bundle...el array de bundles registrados requiere realizar un new sobre un bundle, o no?

Aun no se si el autoloader ha reconocido las clases y tampoco estoy seguro si este mecanismo debe seguirse cuando NO estamos trabajando con bundles.

He observado que en el archivo vendor/composer/autoload_namespaces.php la linea "..EasyRdf_' => array($vendorDir . '/easyrdf/easyrdf/lib')" ha sido agregada correctamente.

Por el momento aun no he podido referenciar a las cases desde un controller determinado.

Gracias por su respuesta.

Yamir Ramirez

unread,
Nov 16, 2014, 3:20:06 PM11/16/14
to symfo...@googlegroups.com, leandr...@gmail.com, rmo...@gmail.com
Hola lmdz :

Lo del composer es correcto según como está en la documentación.

Ahora crea un Bundle con el nombre de tu librería.

ve al archivo service.yml y crea los servicios que necesites

si se te complica y/o no te llevas bien con los servicios (aunque deberías intentarlo pq en S2 casi todo son servicios)

puedes usar directamente la clase sin usar un bundle de por medio

esta linea no es necesaria
require 'vendor/autoload.php';

el framework ya hace ese trabajo por ti, ese el trabajo del composer

con eso debes tener todo resuelto.
Los ejemplos de la librería son didacticos pero evidentemente no debes mezclar todo con todo

Suerte con el proyecto

reyn...@gmail.com

unread,
Nov 16, 2014, 5:55:42 PM11/16/14
to symfo...@googlegroups.com, rmo...@gmail.com, leandr...@gmail.com

Para poder referenciar la libreria debes definirla en las sentencias use del controlador donde la estas usando, cualquier IDE debería ser capaz de darte la ruta donde se encuentre el namespace después de esto deberías poder usarla de lo contrario cuando crees el objeto con new deberías colocar el namespace completo para poder acceder a la librería

Saludos

Send from MotoG

lmdz

unread,
Nov 18, 2014, 10:20:11 AM11/18/14
to symfo...@googlegroups.com, rmo...@gmail.com, leandr...@gmail.com
Utilizando la sentencia 

use EasyRdf_Graph;

En la parte superior del controller, puedo utilizar la clase Graph. Genéricamente supongo que reemplazando "Use EasyRdf_[una_clase]" podre utilizar "una_clase" dentro del controller.

De todas maneras, la integracion de librerias externas sigue siendo confusa. Algunos recomiendan crear un bundle (lo que me parece un poco incomodo si tenemos muchas librerias personalizadas) otros usar servicios, y acá vemos como con un simple "use" podemos usar una librería instalada mediante composer.... no vendría nada mal un tutorial sobre buenas practicas para incluir librerias externas...

reyn...@gmail.com

unread,
Nov 18, 2014, 10:24:50 AM11/18/14
to symfo...@googlegroups.com, rmo...@gmail.com, leandr...@gmail.com

2014-11-18 10:50 GMT-04:30 lmdz <leandr...@gmail.com>:
Utilizando la sentencia 

use EasyRdf_Graph;

En la parte superior del controller, puedo utilizar la clase Graph. Genéricamente supongo que reemplazando "Use EasyRdf_[una_clase]" podre utilizar "una_clase" dentro del controller.

De todas maneras, la integracion de librerias externas sigue siendo confusa. Algunos recomiendan crear un bundle (lo que me parece un poco incomodo si tenemos muchas librerias personalizadas) otros usar servicios, y acá vemos como con un simple "use" podemos usar una librería instalada mediante composer.... no vendría nada mal un tutorial sobre buenas practicas para incluir librerias externas...

Exacto, si tienes todo bien, has instalado las librerias usando composer como mencionas aca bastaria con colocar el namespace de la libreria que quieres usar, pe: en mis controladores cuando necesito usar DateTime de PHP tengo que incluirla en los use como use DateTime o en su defecto cada vez que la instancie colocar un slash invertido, ej: $dateTime = new \DateTime();

En algún momento, cuando tenga mi sitio en línea, cuando mi dia sea de 78 hrs hahahaha colocare algunas cosas, tutoriales, artículos so stay tuned!!!

Esto es como reza el dicho: en casa del herrero cuchillo de palo!!! XD

Saludos
Reply all
Reply to author
Forward
0 new messages