php - Usando la biblioteca preexistente en Symfony
frameworks payment-gateway (3)
No entiendo lo que realmente intentas hacer en tu DefaultController.php
, pero tengo algunas suposiciones.
UPD:
PRIMER Y SEGUNDO punto fue eliminado.
TERCERO:
Cuando intenta hacer use Jets/JetsBundle/Braintree/braintree/braintree_php/lib/Braintree;
tienes que cargar solo la clase Braintree
del archivo Braintree.php
. No todo el archivo con otra información como require_once
instructions.
CUARTO:
/vendor
directorio de /vendor
de los proyectos de Symfony2 generalmente contiene libs de tercera parte. Entonces puedes poner tu lib
aquí.
Espero que algunos de estos puntos te ayuden.
PD: Lo siento por un inglés pobre.
Soy nuevo en Symfony. Estoy intentando utilizar una biblioteca preexistente que he utilizado para mi API de Gateway de pago, con Symfony (v2.3).
Antes de usar Symfony tendría un archivo composer.json
en el directorio raíz y simplemente usaría PHP require ''vendor/Braintree...
Sin embargo, con Symfony me está resultando muy difícil usar la biblioteca para la API de puerta de enlace de pago importándola a mi Controlador.
Nota: Estoy usando una entidad en el mismo controlador de la siguiente manera, que tiene una estructura de directorio similar y funciona muy bien:
use Jets/JetsBundle/Entity/Company;
Esto es lo que traté de usar la API de gateway de pago:
use Jets/JetsBundle/Braintree/braintree/braintree_php/lib/Braintree;
y Braintree.php
contiene:
namespace Widb/WidbBundle/Braintree/braintree/braintree_php/lib;
Sigo recibiendo el siguiente error:
FatalErrorException: Error: Class ''Jets/JetsBundle/Controller/Braintree_Configuration'' not found in C:/xampp/htdocs/www/symfony/src/Jets/JetsBundle/Controller/DefaultController.php line 239
Y la línea 239 de DefaultController.php
contiene:
Braintree_Configuration::environment(''sandbox'');
Como nota al margen, no hice nada más que arrastrar / soltar el directorio de la biblioteca configurada de mi antiguo servidor al directorio de Symfony en el nuevo servidor. ¿Me falta algún script de configuración o configuración de cmd
o algo así?
Agradezco cualquier ayuda en este sentido. Siempre estaré agradecido de que alguien pueda ayudarme a solucionar este problema.
Aquí está mi código DefaultController.php
:
¡Muchas gracias de antemano!
Este proyecto de Braintree parece ser PSR-0, por lo que debería poder usarlo con bastante facilidad.
No hagas esto:
use Jets/JetsBundle/Braintree/braintree/braintree_php/lib/Braintree;
No hay tal espacio de nombres.
Incluya el proyecto Braintree usando Composer (observe que ya tienen la configuración de auto carga del PSR-0: https://github.com/braintree/braintree_php/blob/master/composer.json ).
EDITAR : agrégalo a tu composer.json
y no olvides ejecutar la composer update
(o la php composer.phar update
)
Actualización 2: Como se señaló en los comentarios, es una buena idea usar una etiqueta / rama estable. De esta forma, si hay cambios importantes, puede asegurarse de corregirlos antes de actualizar. Por lo tanto, siempre verifique la versión de la biblioteca (2.23 puede que ya no sea la última versión).
"require": {
...
"braintree/braintree_php": "~2.23"
},
El autocargador debe recoger todas las clases si usa el espacio de nombres global (observe la barra diagonal):
/Braintree_Configuration::environment(''sandbox'');
Hazme saber si esto funciona.
Nota al margen, probablemente deba crear un paquete que haga la configuración por usted en un lugar centralizado.
Realmente te perdiste uno de los primeros comentarios ... que fue perfecto y probablemente te quitará muchos dolores de cabeza.
Siga las instrucciones dadas en https://github.com/cometcult/CometCultBraintreeBundle , este es un paquete que proporciona "Braintree". Un paquete en este caso en realidad es un "módulo" que puede enganchar y configurar mediante archivos de configuración.
Comandos relevantes que faltan para manejar el compositor:
Tan pronto como lo hayas terminado, deberías echarle un vistazo a las dos partes inferiores, además de confeccionar todo.
$factory = $this->get(''comet_cult_braintree.factory'');
$customerService = $factory->get(''customer'');
Avísame si necesitas más ayuda