在Symfony中使用预先存在的库

Anc*_*end 6 php frameworks payment-gateway braintree symfony

我是Symfony的新手.我试图用我已经用了我的支付网关API预先存在的库,Symfony的(V2.3).

在使用Symfony之前,我会composer.json在根目录中有一个文件,我只想使用PHP require 'vendor/Braintree....然而,对于Symfony,我很难将库用于支付网关API,只需将其导入我的Controller即可.

注意:我在同一个控制器中使用实体,如下所示,它具有类似的目录结构,效果很好:

use Jets\JetsBundle\Entity\Company;

这是我尝试使用支付网关API的原因:

use Jets\JetsBundle\Braintree\braintree\braintree_php\lib\Braintree;
Run Code Online (Sandbox Code Playgroud)

Braintree.php包含:

namespace Widb\WidbBundle\Braintree\braintree\braintree_php\lib;

我一直收到以下错误:

FatalErrorException: Error: Class 'Jets\JetsBundle\Controller\Braintree_Configuration' not found in C:\xampp\htdocs\www\symfony\src\Jets\JetsBundle\Controller\DefaultController.php line 239

DefaultController.php239行包含:

Braintree_Configuration::environment('sandbox');

作为旁注,除了将现成的已配置库目录从旧服务器拖放到新服务器上的Symfony目录之外,我没有做任何其他事情.我错过了一些配置脚本或cmd设置或什么?

我感谢你在这方面的任何帮助.我会永远感激有人可以帮我解决这个问题.

这是我的DefaultController.php代码:

http://pastebin.com/kwisEBzL

提前谢谢了!

Mat*_*att 9

这个Braintree项目似乎是PSR-0,所以你应该能够很容易地使用它.

不要这样做:

use Jets\JetsBundle\Braintree\braintree\braintree_php\lib\Braintree;
Run Code Online (Sandbox Code Playgroud)

没有这样的命名空间.

使用Composer包含Braintree项目(注意他们已经有PSR-0自动加载配置:https://github.com/braintree/braintree_php/blob/master/composer.json).

编辑:将此添加到您的composer.json,不要忘记运行composer update(或php composer.phar update)

更新2:正如评论中所指出的,使用稳定的标签/分支是个好主意.这样,如果有重大更改,您可以确保在更新之前修复它们.因此,请始终检查库的版本(2.23可能不再是最新版本).

"require": {
    ...
    "braintree/braintree_php": "~2.23"
},
Run Code Online (Sandbox Code Playgroud)

如果使用全局命名空间,则自动装带器应拾取所有类(请注意前导斜杠):

\Braintree_Configuration::environment('sandbox');
Run Code Online (Sandbox Code Playgroud)

让我知道这个是否奏效.

另外,您应该创建一个捆绑包,在集中的位置为您进行配置.


Ser*_*nin 1

我不明白你实际上想在你的 中做什么DefaultController.php,但我有一些假设。

更新:

第一点第二点已删除。

第三:

当您尝试仅从文件use Jets\JetsBundle\Braintree\braintree\braintree_php\lib\Braintree;加载类时。不是包含其他数据(例如指令)的整个文件。BraintreeBraintree.phprequire_once

第四:

/vendorSymfony2 项目的目录通常包含第三方库。所以你可以把你的放在lib这里。

希望其中一些要点对您有所帮助。

PS抱歉英语不好。