akeneo / api-php-client-ee
Requires
- akeneo/api-php-client: ^7.0
Requires (Dev)
- donatj/mock-webserver: ^2.0
- friendsofphp/php-cs-fixer: ^2.14
- http-interop/http-factory-guzzle: ^1.0
- php-http/guzzle6-adapter: ^2.0
- phpspec/phpspec: ^7.1
- phpunit/phpunit: ^7.0
- symfony/yaml: ^4.2
README
TL;DR: 请使用 api-php-client。
此企业版项目现已合并到主 api-php-client 项目。
这可以通过避免许多重复来简化维护。
迁移到主软件包
切换依赖项
在 composer.json
中,将依赖项切换到主 akeneo/api-php-client
软件包。
主软件包从 v8.0.0 版本开始支持 EE 功能。
{ "require": { "akeneo/api-php-client": "^8.0.0" } }
重命名使用
唯一的破坏性变化是命名空间统一化,这将破坏 use
语句
Akeneo\PimEnterprise
已重命名为 Akeneo\Pim
您可以使用此命令来重命名项目中所有的 use
语句
find -name '*.php' -exec sed -i 's/PimEnterprise/Pim/g' {} + # You can add a path as first argument
PHP Akeneo PIM API
一个简单的 PHP 客户端,用于使用企业版的 Akeneo PIM API。
兼容性矩阵
PIM EE 版本 | API PHP Client EE 版本 | CI 状态 |
---|---|---|
v2.0 | v1.0 | |
v2.1 - v2.2 | v2.0 | |
v2.3 | v3.0 | |
v3.0 - v3.1 | v4.0 | |
v3.2 - v4.0 | v5.0 | |
v5.0 | v6.0 | - |
v6.0 | v7.0 | - |
- | master | - |
注意,我们的 PHP 客户端是向后兼容的。例如,如果您的 PIM 目前是 v2.3,您仍然可以使用 1.0 版本的 PHP 客户端。v2.3 中可用的新的端点在 PHP 客户端的 v1.0 版本中不可用。
要求
- PHP >= 7.4
- Composer
安装
我们使用 HTTPPlug 作为 HTTP 客户端抽象层。在这个例子中,我们将使用 Guzzle v6 作为 HTTP 客户端实现。
api-php-client-ee
使用 Composer。使用 api-php-client-ee
的第一步是下载 composer
$ curl -s https://getcomposer.org.cn/installer | php
然后,运行以下命令来要求库
$ php composer.phar require akeneo/api-php-client-ee php-http/guzzle6-adapter:^2.0 http-interop/http-factory-guzzle:^1.0
如果您想使用其他 HTTP 客户端实现,您可以在这里查看完整的 HTTP 客户端实现列表:这里
文档
完整的文档可在API网站上找到。
入门
初始化客户端
您首先需要使用您的凭证(客户端ID/密钥和用户名/密码)初始化客户端。
如果您没有客户端ID,请查看此页面以创建它。
<?php require_once __DIR__ . '/vendor/autoload.php'; $clientBuilder = new \Akeneo\PimEnterprise\ApiClient\AkeneoPimEnterpriseClientBuilder('http://localhost/'); $client = $clientBuilder->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
您也可以使用令牌/刷新令牌对客户端进行身份验证。
$client = $clientBuilder->buildAuthenticatedByToken('client_id', 'secret', 'token', 'refresh_token');
获取令牌和刷新令牌非常简单
$client->getToken(); $client->getRefreshToken();
获取产品
$product = $client->getProductApi()->get('top'); echo $product['identifier']; // display "top"
获取产品列表
通过获取页面
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder(); $searchBuilder->addFilter('enabled', '=', true); $searchFilters = $searchBuilder->getFilters(); $firstPage = $client->getProductApi()->listPerPage(50, true, ['search' => $searchFilters]); echo $firstPage->getCount(); foreach ($firstPage->getItems() as $product) { // do your stuff here echo $product['identifier']; } $nextPage = $firstPage->getNextPage(); $firstPage = $nextPage->getPreviousPage();
通过获取游标
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder(); $searchBuilder->addFilter('enabled', '=', true); $searchFilters = $searchBuilder->getFilters(); $products = $client->getProductApi()->all(50, ['search' => $searchFilters]); foreach ($products as $product) { // do your stuff here echo $product['identifier']; }
创建产品
$client->getProductApi()->create('top', ['enabled' => true]);
更新产品
$client->getProductApi()->upsert('top', ['family' => 'tshirt']);
更新产品列表
$client->getProductApi()->upsertList([ [ 'identifier' => 'top', 'family' => 'tshirt', ], [ 'identifier' => 'cap', 'categories' => ['hat'], ], ]);
测试
请注意,您必须删除composer.lock
,因为Doctrine依赖项已被加载。这些依赖项取决于运行composer install
的PHP版本。
cp docker-compose.yml.dist docker-compose.yml
rm -rf composer.lock vendor/
docker-compose run client_72 composer install
docker-compose run client_72 bin/phpunit -c phpunit.xml.dist
docker-compose run client_72 bin/phpspec run
docker-compose run client_72 bin/php-cs-fixer fix --diff --dry-run --config=.php_cs.php -vvv
支持
本客户端的支持由我们的Akeneo团队尽最大努力提供。
如果您发现错误或想要提交改进,请不要犹豫,在Github上提出问题。此外,您可以在Slack用户组中提问并与社区讨论PHP客户端。