phrity / o
Consistent object representation of data types. Inheritance friendly implementation. Provides wrapper classes for array, object, string, float, int and bool, plus Queue and Stack collections.
Requires
- php: ^8.0
- phrity/comparison: ^1.2
Requires (Dev)
- php-coveralls/php-coveralls: ^2.4
- phpunit/phpunit: ^9.0|^10.0
- squizlabs/php_codesniffer: ^3.5
README
O
Consistent object representation of data types.
Contains a number of traits that provide interface implementation and other functionality. These traits can be included in any class that require supported functionality.
Also provides ready-made wrapper classes for array, object, string, float, int and bool, plus Queue and Stack collections. Inheritance friendly implementation.
Installation
Install with Composer;
composer require phrity/o
Content by source type
- Array classes and traits
- Boolean class and traits
- Integer class and traits
- Number class and traits
- Object class and traits
- String class and traits
Factory
The factory class converts scalars, arrays and objects into corresponding "O" instance.
$factory = new Factory(); $instance = $factory->convert([1, 2, 3]); // -> Arr instance
Classes
The following ready-made classes are available.
Traits
Traits are defined by source type. The following traits are available.
Examples
Brief examples of classes below.
Scalar types
$str = new Str('hello world'); $str(); // Getter $str('world'); // Setter $int = new Integer(1234); $int(); // Getter $int(5678); // Setter $num = new Number(12.34); $num(); // Getter $num(56.78); // Setter $bool = new Boolean(true); $bool(); // Getter $bool(false); // Setter
Complex types
$array = new Arr([1, 2, 3]); $array[] = 7; // ArrayAccess support count($array); // Countable support foreach ($array as $key => $value) {} // Iterator support $array->equals(new Arr([2, 3, 4])); // Comparison support $object = new Obj(['a' => 1, 'b' => 2, 'c' => 3]); $object->b = 5; // Property access $object->equals(new Obj(['c' => 1, 'd' => 2])); // Comparison support
Collection types
$queue = new Queue([1, 2, 3]); $queue->enqueue(4); $queue->dequeue(); count($queue); // Countable support foreach ($queue as $key => $item) {} // Consuming iterator support $queue->equals(new Queue([2, 3, 4])); // Comparison support $stack = new Stack([1, 2, 3]); $stack->push(4); $stack->pop(); count($stack); // Countable support foreach ($stack as $key => $item) {} // Consuming iterator support $stack->equals(new Stack([2, 3, 4])); // Comparison support