orzmar/eventbrite_connector

PHP库,用于与Eventbrite API v3集成

2.1 2017-06-08 09:49 UTC

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(),
);
?>