4

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

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

我已经研究了类似的做法,AmazonAPI但亚马逊代码对定义的命名空间等更加 OOP 友好。

第 1 步:Composer.json 'Repository' 配置

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

3 回答 3

2

您可以使用 Composers类映射加载。

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

或者

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

{
    "autoload": {
        "files": ["src/MyLibrary/functions.php"]
    }
}
于 2012-11-27T17:06:22.100 回答
0

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

<?php
namespace Path\To\Controllers;

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

        // code...
    }
}
于 2012-11-27T16:38:20.567 回答
0

作曲家需要 alchemyai/alchemyapi_php “dev-master”

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

使用炼金术API;

  • 正常使用它:

$alchemyapi = new AlchemyAPI('jrjeo94j49945hgh92h3493rhf-fake');

  • 最后但最重要的是使用选项运行作曲家(来源:https ://github.com/composer/composer/issues/1150 ):

作曲家转储自动加载--优化

它会工作,完成。

于 2016-01-18T05:42:51.410 回答