Download the PHP package mcustiel/typed-php without Composer
On this page you can find all versions of the php package mcustiel/typed-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download mcustiel/typed-php
More information about mcustiel/typed-php
Files in mcustiel/typed-php
Package typed-php
Short Description Object wrappers for primitives and typed arrays in PHP
License
Informations about the package typed-php
TypedPhp
Immutable Object representation for PHP primitive types and Typed Arrays in PHP.
Motivations
In PHP versions 5.5 and 5.6 type hinting is supported for classes and arrays, but not for scalar types. In PHP version 7, type hinting for scalar types is supported, but not typed arrays. So I created object wrappers for scalar types that can be used in PHP 5 and also typed arrays that can be used in PHP7. These objects can be extended to create your own ValueObjects suitable for your domain.
Installation
Composer
How to use
All wrappers implement Primitive
interface:
Also all of them return themselves as string, through implementation of __toString magic method. So you can echo them directly.
Primitives
- DoubleValue
- IntegerValue
- StringValue
- BooleanValue
Arrays:
There are two base types:
- PrimitivesArray
- ObjectsArray
PrimitivesArray
PrimitivesArray object allows a collection of variables an internal PHP type. And there are already three classes using it:
- DoubleArray
- IntegerArray
- StringArray
- BooleanArray
All of them are constructed with an array as argument. If there is a value in the array of a type that is not correct, an exception will be thrown.
ObjectsArray
This type allows a collection of instances of a given class. An example to create a type for this is as follow:
That's it, you have an array type that accepts only Foo objects. In your code you can use any FooArray object as a regular array.
If there are classes that extend Foo, FooArray will allow them, so polymorphism is supported.
Immutable arrays
For each array type provider there is an immutable version, that allows to be created with a set of values and is not allowed to change.
- ImmutableDoubleArray
- ImmutableIntegerArray
- ImmutableStringArray
- ImmutableBooleanArray
Flyweight implementation
A basic flyweight pattern implementation is provided. It will return the exact same value object on multiple calls:
In this example $a
and $b
reference the exact same instance of IntegerValue.