Php 在Symfony中使用预先存在的库

Php 在Symfony中使用预先存在的库,php,symfony,frameworks,payment-gateway,braintree,Php,Symfony,Frameworks,Payment Gateway,Braintree,我是新来的。我正在尝试使用一个预先存在的库,该库已用于我的支付网关API,带有Symfony(v2.3) 在使用Symfony之前,我会在根目录中有一个composer.json文件,我只需要使用PHPrequire'vendor/Braintree…。然而,对于Symfony,我很难通过将库导入控制器来使用支付网关API 注意:我在同一个控制器中使用了一个实体,如下所示,该实体具有类似的目录结构,运行良好: 使用Jets\JetsBundle\Entity\Company 这就是我尝试使用的支

我是新来的。我正在尝试使用一个预先存在的库,该库已用于我的支付网关API,带有Symfony(v2.3)

在使用Symfony之前,我会在根目录中有一个
composer.json
文件,我只需要使用PHP
require'vendor/Braintree…
。然而,对于Symfony,我很难通过将库导入控制器来使用支付网关API

注意:我在同一个控制器中使用了一个实体,如下所示,该实体具有类似的目录结构,运行良好:

使用Jets\JetsBundle\Entity\Company

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

use Jets\JetsBundle\Braintree\braintree\braintree_php\lib\Braintree;
Braintree.php
包含:

名称空间Widb\WidbBundle\Braintree\Braintree\Braintree\u php\lib

我不断得到以下错误:

FatalErrorException:错误:在C:\xampp\htdocs\www\symfony\src\Jets\JetsBundle\Controller\DefaultController.php第239行中找不到类“Jets\JetsBundle\Controller\Braintree\u配置”

DefaultController.php
第239行包含:

Braintree_配置::环境('sandbox')

顺便说一句,除了将已配置好的库目录从旧服务器拖放到新服务器上的Symfony目录之外,我没有做任何事情。我是否缺少一些配置脚本或
cmd
设置或其他内容

我感谢在这方面提供的任何帮助。如果有人能帮我解决这个问题,我将永远感激

这是我的
DefaultController.php
代码:


非常感谢

我不理解您在
DefaultController.php
中实际尝试做什么,但我有一些假设

UPD:

第一个第二个点被删除

第三名:

当您试图使用Jets\JetsBundle\Braintree\Braintree\Braintree\u php\lib\Braintree制作
您只能从文件
Braintree.php
加载类
Braintree
。不是包含另一个数据的完整文件,如
需要\u once
说明

第四名:

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

希望这几点对你有所帮助


p.S.很抱歉英语不好。

这个Braintree项目似乎是PSR-0,所以你应该能够非常轻松地使用它

不要这样做:

use Jets\JetsBundle\Braintree\braintree\braintree_php\lib\Braintree;
没有这样的名称空间

使用Composer包括Braintree项目(注意,他们已经有了PSR-0自动加载配置:)

编辑:将其添加到您的
composer.json
,不要忘记运行
composer更新
(或
php composer.phar更新

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

如果使用全局名称空间(请注意前导斜杠),自动加载程序应拾取所有类:

让我知道这是否有效


请注意,您可能应该创建一个包,在一个集中的位置为您进行配置。

您确实错过了第一条注释中的一条。。这是正确的,很可能会消除很多头痛

按照中给出的说明操作,这是一个提供“Braintree”的包。在本例中,捆绑包实际上是一个“模块”,您可以通过配置文件进行连接和配置

缺少用于处理composer的相关命令:

一旦你完成了它,你应该看看底部的两个部分,除了完成所有的东西

$factory = $this->get('comet_cult_braintree.factory');
$customerService = $factory->get('customer');

如果您需要更多帮助,请告诉我

您能展示一下您的
DefaultController.php
?(您可以使用)Hi freetrace,请参见编辑,我添加了pastebin控制器代码。@AnchovyLegend如何,而不是将此库集成到Sym中。您只需将其设置为独立服务,并通过某种途径访问它?嗯。。。也许很有趣。我该怎么做?你为什么不在服务器上安装composer?Composer在供应商目录中设置了一些进行名称空间和类映射的文件,如果您只需在整个库中复制这些文件,就会丢失这些文件。谢谢您的回复。你测试过你的答案吗?这对我不起作用,我仍然得到同样的信息。请在回答之前测试您的答案,选项1-3也适用于我的代码的未编辑版本。。。谢谢你的回复,我已经更新了我的答案。您是否尝试
要求_once Braintree.php
而不是
使用
?请您解释一下“旁注,您可能应该创建一个包,在集中的位置为您进行配置”。我个人会将库打包成一个包。捆绑包将把库打包为服务,它可以获取您的配置值并将它们传递到
\Braintree\u配置::
调用中@安德鲁有一个链接,其中有人已经这样做了。我不知道你还想知道什么…回答得好。稍微偏离主题:我会将所需的版本从通用的
开发主机
更改为更稳定的版本,例如
~2.23
。这可以通过在不稳定状态下安装供应商库来最大限度地减少中断应用程序的机会。
\Braintree_Configuration::environment('sandbox');
$factory = $this->get('comet_cult_braintree.factory');
$customerService = $factory->get('customer');