Download the PHP package streamline/openactive-models without Composer
On this page you can find all versions of the php package streamline/openactive-models. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download streamline/openactive-models
More information about streamline/openactive-models
Files in streamline/openactive-models
Package openactive-models
Short Description Library for working with the Openactive Specification
License MIT
Informations about the package openactive-models
models-php

PHP Models for the OpenActive Opportunity and Booking Specifications
OpenActive aims to provide model files for all classes defined in its Opportunity and Booking specifications across the PHP, Ruby, and .NET languages. This repository is intended for the PHP files; see also the Ruby and .NET implementations.
Table of Contents
- Requirements
- Installation
- Usage
- Models
- OpenActive
- Schema.org
- RPDE
- Enums
- Serialization
serialize($obj, $prettyPrint = false)
deserialize($data)
- Models
- Contributing
Requirements
This project requires PHP >=5.6. While most of the functionality should work down to PHP 5.4, some functionality (especially around parsing of offset for DateTimeZone) will not work with that version of PHP (see the DateTimeZone PHP docs for more info).
Installation
To install via Composer, from terminal, run:
Usage
This package provides PHP models for the OpenActive specifications.
It also provide a set of models for the schema.org specifications.
Finally it provides a set of classes to handle OpenActive's RPDE data feeds.
Models
The models are included under the \OpenActive\Models
namespace.
You can instantiate a new model, passing an associative array, where the key is the attribute name, and the value is the attribute value.
For example, from your PHP application, run:
Please note that type enforcement is in place whenever creating a new model.
For example, providing a string
to the target
attribute in the example above will result in an \OpenActive\Exception\InvalidArgumentException
being thrown.
A set of getters and setters for all the attributes is provided. Type enforcement is in place for setters too.
OpenActive
The OpenActive models are included under the \OpenActive\Models\OA
namespace.
To instantiate a new one, see the models section, making sure you are using the right namespace from your model.
Schema.org
The Schema.org models are included under the \OpenActive\Models\SchemaOrg
namespace.
To instantiate a new one, see the models section, making sure you are using the right namespace from your model.
RPDE
RpdeItem & RpdeBody are the main classes to use when generating a page for an RPDE feed.
Feed items
RpdeItem is used to create each individual item for a page. It includes a data attribute to which should be an instance of an OA Model along with metadata (id, modified, state and kind). It is left to each application developer to generate these models and metadata.
e.g. a session series collection
Feed page
RpdeBody is then used to wrap a collection of items and provide the licence and next entries expected from an RPDE page. To help keep pages valid and create an correct next link, use RpdeBody::createFromNextChangeNumber
or RpdeBody::createFromModifiedId
to create an RPDE page feed out of an array of RpdeItem
s (the constructor has been made private).
RpdeBody::createFromNextChangeNumber
will check that all feed items do indeed come after the $changeNumber
argument provided. It will contruct the next link based on the modified value of the newest feed item and the provided $feedBaseUrl
argument.
e.g.
RpdeBody::createFromModifiedId
will check that all feed items do indeed come after the $id
and $modified
arguments provided. It will contruct the next link based on the id and modified value of the newest feed item and the provided $feedBaseUrl
argument.
e.g.
To override the default licence:
Serializing the feed page
Finally the feed page can then be serialized with Serialize RpdeBody::serialize($feedPage)
which will also take care of serializing the each feed item's data attribute as JSON-LD.
See the OpenActive's guide to publishing data and the RPDE specification for more details about RPDE feeds.
Enums
Each enum is represented by a class which contains a constant for each available value.
e.g. Adding days of the week to a Schedule:
Serialization
This package provides support for JSON-LD serialization/deserialization of models and and for the \OpenActive\Rpde\RpdeBody
object.
serialize($obj, $prettyPrint = false)
Returns the JSON-LD string representation of the given object $obj
.
An additional parameter $prettyPrint
is available to return a JSON-LD string in a human-readable format.
An example, using the \OpenActive\Models\OA\SessionSeries
defined above:
Will output:
Please note: at the moment, only the OpenActive @context
is rendered in the serialization output. Future versions of this package may allow to include more and/or different @context
.
deserialize($data)
Returns an object from a given JSON-LD representation.
The $data
argument can be a JSON-LD string, or an associative array, for example as a result of json_encode($string, true)
.
For example:
Will result in:
Contributing
Installation
Please note: Composer is required for dependency management.
Running Tests
PHPUnit 5.7 is used to run tests.
To run the whole suite:
If you want to run the whole suite in verbose mode:
You can also run a section of the suite by specifying the class's relative path on which you want to perform tests:
For additional information on the commands available for PHPUnit, consult their documentation
Updating models
A guide is provided in UPDATING.md
All versions of openactive-models with dependencies
ext-json Version *