/facebook-instant-articles-sdk-php

The Facebook Instant Articles SDK for PHP provides a native interface for creating and publishing Instant Articles.

Primary LanguagePHPOtherNOASSERTION

Facebook Instant Articles PHP SDK

CircleCI Latest Stable Version

🚨 Important Note

⚠️ Instant Articles will not be available starting April 20, 2023

All related developer tools will be archived.


The Facebook Instant Articles SDK for PHP provides a native interface for creating and publishing Instant Articles. The SDK enables developers to more easily integrate Instant Articles into content management systems and in turn enables journalist and publishers to easily publish Instant Articles.

The SDK consists of three components:

  • Elements: A domain-specific language for creating an Instant Articles structure that strictly follows the specification and can be automatically serialized into the subset of HTML5 markup used in the Instant Articles format. This language allows users to programmatically create Instant Articles that are guaranteed to be in compliance with the format.
  • Transformer: An engine for transforming any markup into an Instant Article structure in the DSL. The engine runs a set of rules on the markup that will specify the selection and transformation of elements output by the CMS into their Instant Articles counterparts. The transformer ships with a base set of rules for common elements (such as a basic paragraph or an image) that can be extended and customized by developers utilizing the SDK.
  • Client: A simple wrapper around the Instant Articles API, which can be used for publishing Instant Articles on Facebook. The client provides a CRUD interface for Instant Articles as well as a helper for authentication. The client depends on the main Facebook SDK for PHP as an interface to the Graph API and Facebook Login.

Quick Start

The Facebook Instant Articles PHP SDK can be installed with the Composer dependency manager by running this command on your project's root folder:

$ composer require facebook/facebook-instant-articles-sdk-php

After the installation, you can include the auto loader script in your source with:

require_once 'vendor/autoload.php';

Official Documentation

You can find examples on how to use the different components of this SDK to integrate it with your CMS in the Getting Started section of the documentation.

Contributing

Clone the repository

$ git clone https://github.com/facebook/facebook-instant-articles-sdk-php.git

Composer is a prerequisite for testing and developing. Install composer globally, then install project dependencies by running this command in the project's root directory:

$ composer install

To run the tests:

$ composer test

To fix and check for coding style issues:

$ composer cs

Extra lazy? Run

$ composer all

to fix and check for coding style issues, and run the tests.

If you change structure, paths, namespaces, etc., make sure you run the autoload generator:

$ composer dump-autoload

For us to accept contributions you will have to first sign the Contributor License Agreement. Please see CONTRIBUTING for details.


Testing with Docker

We have provide a Docker environment to ensure a consistent testing & development environment.

Use docker-compose run composer composer install to get started.

Troubleshooting

If you are encountering problems, the following tips may help in troubleshooting issues:

  • Warnings from the Transformer can be seen with $transformer->getWarnings() method.

  • If content is missing from your transformed article, more likely than not there isn't a Transformer Rule matching an element in your source markup. See how to configure appropriate rules for your content in the Transformer Rules documentation.

  • Set the threshold in the transformer Logger level to DEBUG to expose more details about the items processed by the Transformer. TransformerLog::setLevel(TransformerLog::DEBUG);

  • Refer to the existing tests of the Elements for examples of what is required of each and to potentially create your own tests (which can be run with $ composer test).

License

Please see the license file for more information.

Legal