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.

2.1.0 2023-06-21 19:59 UTC

This package is auto-updated.

Last update: 2024-12-12 21:20:00 UTC


README

Build Status Coverage Status

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

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

Versions