Skip to content

appertly/hcollection

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 

hcollection

This library can be used by projects which either wish to use an API compatible with Hack collections, or by projects which are being converted from Hack into PHP. It should basically be a drop-in replacement.

Packagist

Installation

You can install this library using Composer:

$ composer require appertly/hcollection
  • The master branch (version 1.x) of this project requires PHP 7.1 and has no dependencies.

Compliance

Releases of this library will conform to Semantic Versioning.

Our code is intended to mostly comply with PSR-1 and PSR-2. If you find any issues related to standards compliance, please send a pull request!

License

Just like the upstream Hack project, this project is licensed under the 3-clause BSD license.

Gotchas

As of PHP 7.1, the name iterable is now a reserved word. This causes problems with the HH\Iterable interface. In this library, this interface has been renamed to HH\HackIterable.

We have also added JsonSerializable to all concrete classes.

Since PHP wouldn't be able to support curly-brace instantiation, (e.g. Vector{1,2,3}), we instead added a (Google Guava-style) static of method to all the concrete classes:

use HH\ImmMap;
use HH\ImmVector;

$map = ImmMap::of(); // would be empty
$vector = ImmVector::of(); // would be empty
$map = ImmMap::of('key1', 'value1', 'key2', 'value2', 'key3'); // value3 would be null
$vector = ImmVector::of(1, 2, 3);

About

API-compatible Hack collections in PHP 7.1

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages