Symfony2:与非命名空间SDK(特别是PayPal)集成

时间:2012-11-27 16:35:12

标签: php symfony paypal composer-php

我创建了一个PaypalBundle并将Paypal merchant-php-sdk添加到我的composer.json,现在我有一个vendor\paypal\merchant-php-sdk目录。 但是这个SDK没有命名空间,看起来不是OOP访问这些文件的最佳方式是什么?

  • 我应该使用require吗?
  • 我应该对autoloading做什么吗?

我已经研究了使用类似的AmazonAPI所做的事情,但亚马逊代码更加OOP友好,定义了名称空间等。

第1步:Composer.json'存储库'配置

{
    "type": "package",
    "package": {
        "version": "master",
        "name": "paypal/merchant-php-sdk",
        "source": {
            "url": "https://github.com/paypal/merchant-php-sdk.git",
            "type": "git",
            "reference": "master"
        }
    }
}

3 个答案:

答案 0 :(得分:2)

您可以使用作曲家Classmap正在加载。

{
    "autoload": {
        "classmap": ["src/", "lib/", "Something.php"]
    }
}

OR

如果您想在每个请求中明确要求某些文件,那么您可以使用files自动加载机制。

{
    "autoload": {
        "files": ["src/MyLibrary/functions.php"]
    }
}

答案 1 :(得分:0)

如果SDK在Packagist上,那么包作者应该在 composer.json 文件中定义要包含哪些文件;然后,Composer会为您手动包含这些文件。对于他们,您可以从全局命名空间访问它们:

<?php
namespace Path\To\Controllers;

class PaymentsController
{
    public function processAction()
    {
        $paypal = new \PayPal();

        // code...
    }
}

答案 2 :(得分:0)

  

作曲家需要alchemyai / alchemyapi_php&#34; dev-master&#34;

  • 将其类名添加到您要使用的文件/类中,如下所示:
  

使用AlchemyAPI;

  • 正常使用:
  

$ alchemyapi = new AlchemyAPI(&#39; jrjeo94j49945hgh92h3493rhf-fake&#39;);

  

composer dump-autoload --optimize

它会起作用,完成。