orzmar / eventbrite_connector
PHP库,用于与Eventbrite API v3集成
Requires
- php: >=5.5
- guzzlehttp/guzzle: ^6.2
This package is not auto-updated.
Last update: 2024-09-20 19:55:39 UTC
README
Eventbrite Connector是一个简单易用的PHP库,用于与Eventbrite API v3集成。
安装
通过composer要求库:composer require orzmar/eventbrite_connector
运行composer install来安装它
然后,将自动加载文件添加到您的脚本中
<?php require_once 'vendor/autoload.php'; ?>
完成了!祝贺您!
连接器
请注意,连接器类提供了处理Eventbrite提供的所有必要的“个人令牌”或“OAuth令牌流”访问方法的方法,但实现逻辑需要您来完成。
现在您已经要求了自动加载器,您可以实例化连接器
在这个例子中,我处于“个人令牌”的神奇世界。
<?php $eb = new Connector('CLIENT_SECRET', 'CLIENT_ID', 'OAUTH_TOKEN'); ?>
祝贺,这是您的第一个连接器!请好好照顾它。
有人说过“实体”吗?
为了向Eventbrite API发送请求,连接器必须知道我们在谈论什么
- 事件
- 用户
- 订单
- ... (其他)
这些中的每一个都是Eventbrite实体类型,由其自己的EntityApiType标识,该类型定义了其特定REST调用的基本路径(例如:events用于事件,users用于用户等...)。
实体C.R.U.D.
创建
是否可以通过每个“可创建”实体类的静态方法create()来创建新的实体*?
<?php /** @var \EventBriteConnector\Entity\Event $event */ $event = Event::create($eb, [ 'event.name.html' => 'My new awesome event', 'event.start.utc' => '2016-10-12T14:00:00Z', 'event.start.timezone' => 'Europe/Rome', 'event.end.utc' => '2016-10-17T00:00:00Z', 'event.end.timezone' => 'Europe/Rome', 'event.currency' => 'EUR', ]); ?>
* 可创建实体包括:事件、组织者、系列、场馆、Webhooks。
为了创建实体属性*,您可以使用实体saveProperty()方法
<?php /** @var \EventBriteConnector\Entity\Event $event */ $event->saveProperty('ticket_classes', [ 'ticket_class.name' => 'Early bird ticket', 'ticket_class.description' => 'Special offer!', 'ticket_class.quantity_total' => 10, 'ticket_class.free' => TRUE ]); ?>
* 实体属性是所有使用以下模式定义的端点:
/<entity_api_type>/:id/<property_name>/例如:POST /events/:id/ticket_classes/
读取
可以使用连接器的fetch()方法检索实体
<?php $event = $eb->fetch('event', 1234567890); ?>
您可以使用实体的load()方法加载特定的实体属性,或使用条件标准过滤属性结果。
<?php $eb->fetch('user') ->load('organizers') ->load('owned_events', ['status' => 'live', 'order_by' => 'start_desc']); ?>
注意:可以通过实体方法getActiveData()访问最后加载的数据
更新
要更新实体,请使用带有要更改的值数组的实体update()方法。
<?php /** @var \EventBriteConnector\Entity\Event $event */ $event->update([ "name" => [ 'html' => 'Api updated event', ] ]); ?>
删除
可以使用实体的delete()方法删除实体
<?php /** @var \EventBriteConnector\Entity\Event $event */ $event->delete(); ?>
媒体
您可以使用媒体实体将文件上传到Eventbrite。
<?php /** @var \EventBriteConnector\Entity\Media $media */ $media = new Media(); $media->setConnector($eb); $media->upload('~/Pictures/test-image.jpg', Media::IMAGE_EVENT_LOGO, [ 'crop_mask.top_left.x' => 0, 'crop_mask.top_left.y' => 0, 'crop_mask.width' => 300, 'crop_mask.height' => 200, ]); ?>
注意:裁剪遮罩参数是可选的。
E.B.电话回家
所以,现在您已经理解了实体的概念并且有一个连接器,您就可以使用它们来检索数据了。您可以使用您的连接器以“标准”方式或更“流畅”的方式使用。
标准方式
<?php $conditions = array('status' => 'live', 'order_by' => 'start_desc'); $user = $eb->fetch('user') ->load('organizers') ->load('owned_events', $conditions); $event = $eb->fetch('event', 123456789) ->load('attendees'); // And now just call the getData() method! $me = $user->getData('me'); $organizers = $user->getData('organizers'); $key = $user->buildDataKey('owned_events', $conditions); $owned_events = $user->getData($key); $data = array( 'ME' => $me, 'ORGANIZERS' => $organizers, 'OWNED_EVENTS' => $owned_events, 'EVENT' => $event->getData(123456789), 'ATTENDEES' => $event->getData('attendees'), ); // Or if you are Fast & Furious, just call the getData method without params. $fnf_data = $user->getData(); ?>
“别停我!” - 即流畅方式
<?php $conditions = array('status' => 'live', 'order_by' => 'start_desc'); $eb->fetch('user') ->load('organizers') ->load('owned_events', $conditions) ->getConnector() ->fetch('event', 123456789) ->load('attendees'); $data = array( 'user' => $eb->getEntity('user', 'me')->getData(), 'event' => $eb->getEntity('event', 123456789)->getData(), ); ?>