quantum3k / erply-sdk
Erply SDK 库
v2.0.0
2024-01-24 12:21 UTC
Requires
- php: >=7.4
- guzzlehttp/guzzle: ^7.5
This package is auto-updated.
Last update: 2024-09-24 14:24:10 UTC
README
1. 结构
命名空间
\ErplySDKAPI 的入口点\ErplySDK\DTO主要 Erply API 的数据对象\ErplySDK\PIMErply PIM 的数据对象 (🛠️ 未完成)\ErplySDK\ReportsReports API 的数据对象 (🛠️ 未完成)\ErplySDK\Bulks用于处理主要 API 的批量操作的类\ErplySDK\Collections用于处理 DTO 集合的类
2. 使用
创建连接
$api = \ErplyAPI::getInstanceWithCredentials($code, $username, $password); $api->setThrow(false); $api->setRecordsOnPage(40);
基本连接参数
如何向对象中添加嵌套元素
use ErplyAPI; $doc = new DTO\SaleDocument(); $row = $doc->addRow(); $row->rowID = 100; $row->code = 2048; $row = $doc->addRow(); $row->rowID = 200; $row->code = 4096;
保存
$api->saveSalesDocument($doc);
获取
$response = $api->getSalesDocuments(['clientIDs' => '128, 256, 512, 1024']);
当响应中的对象由 \ErplySDK\Collections 集合实现时,可以使用标准的 PHP 迭代方法来迭代此对象,连接将自动请求所有后续页面,直到遍历请求中的所有记录
foreach ($response as $record) { echo "Client {$record->clientName}, with email: {$record->clientEmail}" . PHP_EOL; }
3. 用户查询
连接实例有两个方法可以直接使用当前连接向服务器发送请求。此类请求的响应始终是非类型化的,即关联数组。
// Стандартный запрос $response = $api->stdRequest($params); // Пакетный запрос $response = $api->bulkRequest($params);
对于 Erply 的标准请求,期望请求名称参数为 request,而对于批量请求,期望请求名称参数为 requestName,为此,连接有两个常量,应作为请求名称键使用 STD_REQ 和 BULK_REQ。
标准用户查询
此类查询将获得非类型化响应,即关联数组。
$response = $api->stdRequest([$api::STD_REQ => 'getCustomers', 'searchName' => 'John']);
批量用户查询
也可以发送批量查询。此类查询将获得非类型化响应,即关联数组。
$response = $api->bulkRequest([ [$api::BULK_REQ => 'getCustomers', 'searchPersonFirstName' => 'John'], [$api::BULK_REQ => 'getVatRates'], [$api::BULK_REQ => 'getEmployees'], ]);
批量用户查询 (类型化)
也可以从批量用户查询中获得类型化响应。在这种情况下,所有已知的嵌套查询将被初始化为集合。
$response = $api->getBulkResponse([ [$api::BULK_REQ => 'getCustomers', 'searchPersonFirstName' => 'John'], [$api::BULK_REQ => 'getVatRates'], [$api::BULK_REQ => 'getEmployees'], ]); $collections = $response->getRequests();
⚠️ 目前,通过用户批量查询获得集合不允许迭代记录。
4. 其他
直接调用来自 BaseEntityCollection 抽象的所有子类的方法 current() 和 getRecords(),是为了让子类定义具体的返回类型。
5. 路线图
- 在所有实体中实现属性作为单独的集合。
- 实现通过类型化用户批量查询获得的记录迭代。