我创建了一个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"
}
}
}
答案 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)
我对https://packagist.org/packages/alchemyai/alchemyapi_php有同样的问题 一个无命名空间的包,以上都没有解决问题。这是我的解决方案:
不要从包中更改任何内容,composer会为我们处理自动加载类图。
作曲家需要alchemyai / alchemyapi_php&#34; dev-master&#34;
使用AlchemyAPI;
$ alchemyapi = new AlchemyAPI(&#39; jrjeo94j49945hgh92h3493rhf-fake&#39;);
composer dump-autoload --optimize
它会起作用,完成。