6

我是 Symfony 的新手。我正在尝试使用我用于支付网关 API 的预先存在的库和 Symfony (v2.3)。

在使用 Symfony 之前,我会composer.json在根目录中有一个文件,我会简单地使用 PHP require 'vendor/Braintree...。但是,对于 Symfony,我很难通过将支付网关 API 库导入到我的控制器来使用它。

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

use Jets\JetsBundle\Entity\Company;

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

use Jets\JetsBundle\Braintree\braintree\braintree_php\lib\Braintree;

并且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

提前谢谢了!

4

3 回答 3

9

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

不要这样做:

use Jets\JetsBundle\Braintree\braintree\braintree_php\lib\Braintree;

没有这样的命名空间。

使用 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"
},

如果您使用全局命名空间,自动加载器应该会拾取所有类(注意前面的斜线):

\Braintree_Configuration::environment('sandbox');

让我知道这个是否奏效。

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

于 2013-10-31T01:08:44.670 回答
2

你真的错过了第一批评论中的一个。它是正确的,很可能会消除很多头痛。

按照https://github.com/cometcult/CometCultBraintreeBundle给出的说明进行操作,这是一个提供“Braintree”的包。在这种情况下,捆绑包实际上是一个“模块”,您可以挂接并通过配置文件进行配置。

处理作曲家缺少的相关命令:

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

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

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

于 2013-10-31T23:28:36.010 回答
1

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

升级版:

FIRSTSECOND点被删除。

第三:

当你试图让use Jets\JetsBundle\Braintree\braintree\braintree_php\lib\Braintree;你只Braintree从文件中加载类时Braintree.php。不是带有其他数据(如require_once指令)的整个文件。

第四:

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

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

PS对不起英语不好。

于 2013-10-27T20:21:17.927 回答