neclimdul / netsuite-search-iterator
帮助在 netsuite-php 中迭代搜索结果的库。
v1.1.0
2024-05-18 16:17 UTC
Requires
- php: >=8.1
- ext-json: *
- ext-soap: *
- ryanwinchester/netsuite-php: *
Requires (Dev)
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^1.7
- phpunit/phpunit: ^11.0
README
这提供了一个原生的 PHP 迭代器,允许快速轻松地与 NetSuite 的 SOAP 搜索接口集成。这个接口需要遍历分页结果,有很多样板代码,这使得这个过程更加容易且更少出错。
示例
<?php $search = new ContactSearchBasic(); $search->email = new SearchStringField(); $search->email->operator = SearchStringFieldOperator::is; $search->email->searchValue = 'joe@example.com'; $iterator = new SearchIterator($service, $search, Contact::class, 20); try { foreach ($iterator as $record) { // process results } } catch (\SoapFault $e) { // Handle exception } catch (\NecLimDul\NetSuiteSearchIterator\Exception\StatusFailure $e) { // Handle exception }
循环足以与这个迭代器交互,但它也可以与生成器和 \nikic\iter 库一起使用。
<?php fetchCustomer($date) { $search = new CustomerSearchBasic(); $search->lastModifiedDate = new SearchDateField(); $search->lastModifiedDate->operator = SearchDateFieldOperator::after; $search->lastModifiedDate->searchValue = date(DATE_ISO8601, $date); $iterator = new SearchIterator($service, $search); foreach ($iterator as $record) { yield convertCustomer($record); } } // This is a pretty weird filter not to include in your search but easy to read. $mylist = \iter\filter(fn($customer) => $customer->isActive, fetchCustomer('2020-09-09')); foreach ($mylist as $customer) { print($customer->companyName); }