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.
Installs: 46
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/phrity/o
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.
| Class | Source | Implements | 
|---|---|---|
| Arr | array | ArrayAccess Comparable Countable Equalable Iterator JsonSerializable Stringable Traversable | 
| Boolean | bool | Comparable Equalable Stringable | 
| Integer | int | Comparable Equalable Stringable | 
| Number | float | Comparable Equalable Stringable | 
| Obj | object | Comparable Equalable IteratorAggregate JsonSerializable Stringable Traversable | 
| Stack | array | Comparable Countable Equalable IteratorAggregate Stringable Traversable | 
| Str | string | Comparable Equalable Stringable | 
| Queue | array | Comparable Countable Equalable IteratorAggregate Stringable Traversable | 
Traits
Traits are defined by source type. The following traits are available.
| Trait | Provides | By source type | 
|---|---|---|
| ArrayAccessTrait | ArrayAccess | Array | 
| CoercionTrait | Array Boolean Integer Number Object String | |
| ComparableTrait | Comparable Equalable | Array Boolean Integer Number Object String | 
| CountableTrait | Countable | Array | 
| InvokableTrait | Boolean Integer Number String | |
| IteratorAggregateTrait | IteratorAggregate Traversable | Array Object | 
| IteratorTrait | Iterator Traversable | Array | 
| JsonSerializableTrait | JsonSerializable | Array Object | 
| PropertyAccessTrait | Object | |
| QueueIteratorTrait | IteratorAggregate Traversable | Array | 
| QueueTrait | Array | |
| StackIteratorTrait | IteratorAggregate Traversable | Array | 
| StackTrait | Array | |
| StringableTrait | Stringable | Array Boolean Integer Number Object String | 
| TypeTrait | Array Boolean Integer Number Object String | 
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
Versions
| Version | PHP | |
|---|---|---|
| 2.1 | ^8.0 | JsonSerializable, improved ArrayAccess and PropertyAccess | 
| 2.0 | ^8.0 | Implementation as Traits | 
| 1.5 | ^8.0 | Fix for PHP 8.x versions | 
| 1.4 | ^7.1|^8.0 | |
| 1.3 | ^7.1 | QueueandStackcollection classes | 
| 1.2 | ^7.1 | Str(string),Number(float),Integer(int) andBoolean(bool) classes | 
| 1.1 | >=5.6 | Comparison support | 
| 1.0 | >=5.6 | Arr(array) andObj(object) classes |