bmeme / eventbrite_connector
用于与Eventbrite API v3集成的PHP库
Requires
- php: >=5.5
- guzzlehttp/guzzle: ^6.2
This package is not auto-updated.
Last update: 2024-09-28 20:25:17 UTC
README
Eventbrite Connector是一个简单易用的PHP库,用于与Eventbrite API v3集成。
安装
通过composer要求库: composer require bmeme/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. phone home
因此,现在您已经理解了实体概念并且有了连接器,您就可以使用这两个工具进行数据检索了。您可以使用连接器以“标准”方式或更“流畅”的方式使用。
标准方式
<?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(); ?>
“Don't stop me now!” - 即流畅方式
<?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(), ); ?>