bmeme/eventbrite_connector

用于与Eventbrite API v3集成的PHP库

2.0 2016-10-03 14:43 UTC

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