Download the PHP package infomaniac-amf/php without Composer

On this page you can find all versions of the php package infomaniac-amf/php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package php

Build Status Scrutinizer Code Quality

Intro

AMF (Action Message Format) is a binary data serialization protocol. Simply put, it transforms objects in memory into a binary string, and can reverse this binary string into an object in memory. It can be used just like JSON, and this library has been build to provide a similar API to that exposed by the JSON functionality in PHP.

Purpose

The purpose of this library is to provide a consistent and symmetric implementation of the AMF specification in both PHP & JSON.

Why use AMF?

Well, it's up to you. JSON is perfectly suited to the web, however it does have some shortcomings which are addressed by AMF. For starters, JSON cannot handle complex object graphs with circular references; additionally, it cannot serialize dates & byte arrays - you would need to do some additional work to support these in JSON (convert date to unix timestamp, byte arrays to base64).

Should I stop using JSON?

Hells no. JSON is great; AMF can simply provide you with some additional funcitonality which could help you build your web app.

Getting Started

To begin using this library, you will need to install it via Composer:

Once you have run composer install, you will be able to use the library by simply including Composer's autoloader:

Usage

Here is a simple example of encoding an array to AMF:

This will produce a binary string which represents your given data.

If you were to inspect the HTTP traffic of a page that produces AMF data, using a tool such as Charles Proxy, you would see the following output:

To decode this string, simply do the following:

If you were to var_dump this data, it would look identical to the input data given to the amf_encode function.

Extra Features

Class-mapping

AMF allows you to encode an object and retain some metadata about it; for example, when serializing an instance of a class (not stdClass) the library will retain the class' fully qualified namespace name and use it to reconstruct an object of that type upon decoding.

Consider the following class:

If we encode an instance of this object, by default its class type will be ignored and when the data is decoded, the resulting value will be a plain PHP stdClass instance.

This is how the encoded data will look in Charles:

In order to retain the class type in AMF, you will need to add an additional flag to the amf_encode function call:

When the AMF_CLASS_MAPPING flag is given, the encoded data will look like this in Charles:

Notice the additional Person metadata in this response

Now, when this data is decoded, the library will attempt to create a new instance of the Person class and set its public property name to "bob".

Data Encoding (Serialization)

The AMF spec allows for the serialization of several different data-types.

Here is a link to the latest specification: AMF3 Spec - January 2013

This library implements 10 of the 18 data-types described in the specification. The reason for the support of only a subset of these types can be seen in two lights: utility and limitation. Here is an exhaustive list of the data-types available:

Data-Type Included Reason for exclusion
Undefined -
Null -
False -
True -
Integer -
Double -
String -
XML Document Who needs XML?
Date -
Array -
Object -
XML Who needs XML?
ByteArray -
Vector Not high priority - also, possible browser incompat issue with JS
Vector Not high priority - also, possible browser incompat issue with JS
Vector Not high priority - also, possible browser incompat issue with JS
Vector Not high priority - also, possible browser incompat issue with JS
Dictionary PHP cannot use objects are array keys

License

This project is licensed under the MIT license.

Acknowledgements

While writing this library, I used several libraries to validate my progress, and to help me come unstuck. I would like to extend a special thanks to the following libraries and individuals:


All versions of php with dependencies

PHP Build Version
Package Version
Requires php Version >=5.4
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package infomaniac-amf/php contains the following files

Loading the files please wait ....