Download the PHP package hhvm/type-assert without Composer
On this page you can find all versions of the php package hhvm/type-assert. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download hhvm/type-assert
More information about hhvm/type-assert
Files in hhvm/type-assert
Package type-assert
Short Description Convert untyped data to typed data
License MIT
Informations about the package type-assert
TypeAssert
Hack library for converting untyped data to typed data.
Warning for TypeAssert\matches_type_structure()
TypeStructure<T>
, type_structure()
, and ReflectionTypeAlias::getTypeStructures()
are experimental features of HHVM, and not supported by Facebook or the HHVM team.
This means that matches_type_structure()
may need to be removed in a future release
without warning.
We strongly recommend moving to TypeAssert\matches<T>()
and
TypeCoerce\match<T>()
instead.
Installation
Usage
TypeAssert provides functions that take a mixed input, and will either return it unmodified (but with type data) or throw an exception; for example:
These include:
string(mixed): string
int(mixed): int
float(mixed): float
bool(mixed): bool
resource(mixed): resource
num(mixed): num
arraykey(mixed): arraykey
not_null<T>(?T): T
instance_of<T>(classname<T>, mixed): T
classname_of<T>(classname<T>, mixed): classname<T>
matches<T>(mixed): T
matches_type_structure<T>(TypeStructure<T>, mixed): T
Coercion
TypeAssert also contains the Facebook\TypeCoerce
namespace, which includes a
similar set of functions:
string(mixed): string
int(mixed): int
float(mixed): float
bool(mixed): bool
resource(mixed): resource
num(mixed): num
arraykey(mixed): arraykey
match<T>(mixed): T
match_type_structure<T>(TypeStructure<T>, mixed): T
These will do 'safe' transformations, such as int-ish strings to int, ints to strings, arrays to vecs, arrays to dicts, and so on.
TypeSpec
You can also assert/coerce complex types (except for shapes and tuples) without a type_structure:
Shapes and tuples are not supported, as they can not be expressed generically.
matches_type_structure<T>(TypeStructure<T>, mixed): T
Asserts that a variable matches the given type structure; these can be arbitrary nested shapes. This is particular useful for dealing with JSON responses.
You can use type_structure()
to get a TypeStructure<T>
for a type constant,
or ReflectionTypeAlias::getTypeStructure()
for top-level type aliases.
not_null<T>(?T): T
Throws if it's null, and refines the type otherwise - for example:
is_instance_of<T>(classname<T>, mixed): T
Asserts that the input is an object of the given type; for example:
is_classname_of<T>(classname<T>, mixed): classname<T>
Asserts that the input is the name of a child of the specified class, or implements the specified interface.
Credit
This library is a reimplementation of ideas from:
- @admdikramr
- @ahupp
- @dlreeves
- @periodic1236
- @schrockn
Security Issues
We use GitHub issues to track public bugs. Please ensure your description is clear and has sufficient instructions to be able to reproduce the issue.
Facebook has a bounty program for the safe disclosure of security bugs. In those cases, please go through the process outlined on that page and do not file a public issue.
License
Type-Assert is MIT-licensed.