juanparati / podium
一个现代的PHP库,用于与Podium兼容,支持Laravel
1.2.0
2023-06-08 08:26 UTC
Requires
- php: >=8.1
- ext-json: *
- guzzlehttp/guzzle: ^7.2
- illuminate/cache: >=8.0
- illuminate/config: >=8.0
- illuminate/support: >=8.0
- psr/log: ^2.0 || ^3.0
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-08 11:29:12 UTC
README
一个与现代Podio API客户端兼容的Laravel。
安装
composer require juanparati/podium
Laravel配置
此库与Laravel兼容。以下命令将部署配置文件
artisan vendor:publish --provider="Juanparati\Podium\Providers\PodiumProvider"
如何使用它?
客户端实例和身份验证
$client = new \Juanparati\Podium\Podium( session: '12346', clientId: 'myClientId', clientSecret: 'myClientSecret' ); $client->authenticate( new \Juanparati\Podium\Auths\AppAuth( appId: '987654', appToken: 'myAppToken' ) );
请求单个项目
$item = (new \Juanparati\Podium\Requests\ItemRequest($client))->get(itemId: 11111111);
请求应用中的所有项目
$models = (new \Juanparati\Podium\Requests\ItemRequest($client))->filter(appId: 987654);
或者使用自定义选项
$models = (new \Juanparati\Podium\Models\ItemFilterModel([], $client)) ->setSortBy('last_edit_on') ->setSortDesc(true) ->setLimit(5);
读取所有项目。注意,items()方法是一个生成器,它会自动请求额外的页面。
$itemNum = 0; foreach ($models->items() as $item) { print_r($item->originalValues()) // The setLimit options indicate the limit of items per page to the request, // but the generator will automatically request the next page. // In order to limit the number of results we should manually limit the results. if ($itemNum === 10) break; $itemNum++; }
读取项目值。
此库提供了两种读取项目值的方法。
- 使用
originalValues
方法获取原始值
$item->originalValues();
- 使用
decodeValue
方法获取简化值
$item->decodeValue();
两种值都会遍历所有值的树,但您可以引用特定的值。
// Accessing to the fields $item->fields->decodeValue();
或者
// Accessing to specific values $item->fields->title; $item->fields->{'my-custom-field'};
保存项目
⚠️ 注意:保存项目仍是一个实验性功能。请自行承担使用此功能的风险。
可以保存/更新项目。
// Accessing to specific values $item->fields->title = "My new title"; $item->save(silent: false, hook: true); // Will perform silent update calling the bounded hooks
插入新项目
⚠️ 注意:保存项目仍是一个实验性功能。请自行承担使用此功能的风险。
$attr = [ 'title' => 'My new title' 'revenue' => ['currency' => 'DKK', 'value' => 123.34]; ]; (new \Juanparati\Podium\Requests\ItemRequest($client))->create( appId: 987654, attr: $attr, silent: false, hook: false );
使用不同的字段键
可以使用以下格式检索字段键
- external_id(默认)。
- external_id(蛇形格式)。
- field_id。
例如,有时检索字段键的蛇形格式非常合适,这使得操作变得最容易。
$item = (new \Juanparati\Podium\Requests\ItemRequest($client))->get(itemId: 11111111); echo $item->fields->{'my-long-named-field'}; $item->setOptions([ \Juanparati\Podium\Models\ItemFieldModel::class => [ \Juanparati\Podium\Models\ItemFieldModel::OPTION_KEY_AS => \Juanparati\Podium\Models\ItemFieldModel::KEY_AS_SNAKECASE, ] ); echo $item->fields->my_long_named_field; $item->setOptions([ \Juanparati\Podium\Models\ItemFieldModel::class => [ \Juanparati\Podium\Models\ItemFieldModel::OPTION_KEY_AS => \Juanparati\Podium\Models\ItemFieldModel::KEY_AS_FIELD_ID, ] ); echo $item->fields->{'12345567'};
将日期和日期时间转换为不同的时区和格式
$item = (new \Juanparati\Podium\Requests\ItemRequest($client))->get(itemId: 11111111); $item->setOptions([ \Juanparati\Podium\Models\ItemFieldModel::class => [ \Juanparati\Podium\Models\ItemFields\DateItemField::class => [ \Juanparati\Podium\Models\ItemFields\DateItemField::OPTION_TIMEZONE => 'Europe/Copenhagen', \Juanparati\Podium\Models\ItemFields\DateItemField::OPTION_FORMAT => \Juanparati\Podium\Models\ItemFields\DateItemField::FORMAT_TIMESTAMP ] ] );