php-arsenal / salesforce-soap-client
用于Salesforce SOAP API的客户端
2.0.1
2021-04-12 16:02 UTC
Requires
- php: >=7.4
- psr/log: ^1.1
- symfony/event-dispatcher: ^5.2
Requires (Dev)
- phpunit/php-code-coverage: ^9.2
- phpunit/phpunit: ^9.5
README
简介
此库是Salesforce SOAP API的客户端,旨在作为Force.com Toolkit for PHP的替代品。
功能
此库的功能包括以下内容。
- 自动在PHP和SOAP日期和日期时间对象之间进行转换。
- 自动将Salesforce (UTC)时间转换为您的本地时区。
- 通过事件轻松扩展:添加自定义日志记录、缓存、错误处理等。
- 通过记录迭代器,轻松遍历需要多次调用API的大结果集。
- BulkSaver通过使用批量创建、删除、更新和更新来帮助您保持在Salesforce API限制内。
- 使用客户端与Symfony Mapper Bundle结合使用,以获得更轻松的Salesforce数据访问。
安装
composer require php-arsenal/salesforce-soap-client
用法
客户端
使用客户端查询和操作您的组织Salesforce数据。首先使用构建器创建客户端
$builder = new \PhpArsenal\SoapClient\ClientBuilder( '/path/to/your/salesforce/wsdl/sandbox.enterprise.wsdl.xml', 'username', 'password', 'security_token' ); $client = $builder->build();
SOQL查询
$results = $client->query('select Name, SystemModstamp from Account limit 5');
这将从Salesforce获取五个账户并返回它们作为RecordIterator
。现在您可以遍历这些结果。账户的SystemModstamp
返回为\DateTime
对象
foreach ($results as $account) { echo 'Last modified: ' . $account->SystemModstamp->format('Y-m-d H:i:') . "\n"; }
一对一关系(子查询)
子查询的结果本身也作为记录迭代器返回。因此
$accounts = $client->query( 'select Id, (select Id, Name from Contacts) from Account limit 10' ); foreach ($accounts as $account) { if (isset($account->Contacts)) { foreach ($account->Contacts as $contact) { echo sprintf("Contact %s has name %s\n", $contact->Id, $contact->Name); } } }
检索大量记录
如果您发出返回超过2000条记录的查询,Salesforce API将只返回前2000条记录。使用queryLocator
,您可以然后以2000条记录的批次检索后续结果。记录迭代器会自动为您执行此操作
$accounts = $client->query('Select Name from Account'); echo $accounts->count() . ' accounts returned'; foreach ($accounts as $account) { // This will iterate over the 2000 first accounts, then fetch the next 2000 // and iterate over these, etc. In the end, all your organisations’s accounts // will be iterated over. }
日志记录
要为客户端启用日志记录,请在构建器上调用withLog()
。例如,当使用Monolog
$log = new \Monolog\Logger('name'); $log->pushHandler(new \Monolog\Handler\StreamHandler('path/to/your.log')); $builder = new \PhpArsenal\SoapClient\ClientBuilder( '/path/to/your/salesforce/wsdl/sandbox.enterprise.wsdl.xml', 'username', 'password', 'security_token' ); $client = $builder->withLog($log) ->build();
现在将对Salesforce API的所有请求以及它返回的响应和任何错误进行记录。