2017 © Pedro Peláez
 

library speedreader

Nested-property accessor with an emphasis on performance

image

ehough/speedreader

Nested-property accessor with an emphasis on performance

  • Thursday, August 24, 2017
  • by ehough
  • Repository
  • 1 Watchers
  • 0 Stars
  • 107 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 35 % Grown

The README.md

SpeedReader Build Status

Nested-property selector for PHP 5.3+ with a focus on performance., (*1)

SpeedReader allows you to use dot notation (a subset of JMESPath expressions and subexpressions) to quickly read values from arrays, \ArrayAccess instances, objects, or any combination thereof. You can provide a fallback value to use if the property does not exist or cannot be casted to the desired type., (*2)

Installation

Install the latest version with, (*3)

$ composer require ehough/speedreader

Basic Usage

SpeedReader can read from any mix of arrays, \ArrayAccess instances, and objects., (*4)

<?php

use Hough\SpeedReader\SpeedReader;

$arrayAccess = new \ArrayIterator(array(
    'hello' => 'there',
));

$object = new stdClass();
$object->foo = 99;

$subject = array(
    'foo' => array(
        'bar' => array(
            'int'         => 123,
            'float'       => 456.7,
            'bool'        => true,
            'object'      => $object,
            'array'       => array('foo', 'bar'),
            'string'      => 'hello!',
            'arrayAccess' => $arrayAccess,
        ),
    ),
);

SpeedReader::getAsInteger()

Gets the value, casted to integer, at the given path. If no fallback is supplied, 0 will be returned., (*5)

SpeedReader::getAsInteger($subject, 'foo.bar.float');               /* int(456)  */
SpeedReader::getAsInteger($subject, 'foo.bar.float', 99);           /* int(456)  */
SpeedReader::getAsInteger($subject, 'not.found', 99);               /* int(99)   */
SpeedReader::getAsInteger($subject, 'not.found');                   /* int(99)   */
SpeedReader::getAsInteger($subject, 'foo.bar.object.foo');          /* int(99)   */
SpeedReader::getAsInteger($subject, 'foo.bar.int');                 /* int(123)  */
SpeedReader::getAsInteger($subject, 'foo.bar.bool');                /* int(1)    */
SpeedReader::getAsInteger($subject, 'foo.bar.object', 99);          /* int(99)   */
SpeedReader::getAsInteger($subject, 'foo.bar.array', 99);           /* int(99)   */
SpeedReader::getAsInteger($subject, 'foo.bar.string');              /* int(0)    */
SpeedReader::getAsInteger($subject, 'foo.bar.arrayAccess', 99);     /* int(99)   */
SpeedReader::getAsInteger($subject, 'foo.bar.arrayAccess.hello');   /* int(0)    */

SpeedReader::getAsString()

Gets the value, casted to string, at the given path. If no fallback is supplied, an empty string will be returned., (*6)

SpeedReader::getAsString($subject, 'foo.bar.float');                   /* string(5) "456.7"     */
SpeedReader::getAsString($subject, 'foo.bar.float', 'fallback');       /* string(5) "456.7"     */
SpeedReader::getAsString($subject, 'not.found', 'fallback');           /* string(8) "fallback"  */
SpeedReader::getAsString($subject, 'not.found');                       /* string(0) ""          */
SpeedReader::getAsString($subject, 'foo.bar.object.foo');              /* string(2) "99"        */
SpeedReader::getAsString($subject, 'foo.bar.int');                     /* string(3) "123"       */
SpeedReader::getAsString($subject, 'foo.bar.bool');                    /* string(1) "1"         */
SpeedReader::getAsString($subject, 'foo.bar.object', 'fallback');      /* string(8) "fallback"  */
SpeedReader::getAsString($subject, 'foo.bar.array', 'fallback');       /* string(8) "fallback"  */
SpeedReader::getAsString($subject, 'foo.bar.string');                  /* string(6) "hello!"    */
SpeedReader::getAsString($subject, 'foo.bar.arrayAccess', 'fallback'); /* string(8) "fallback"  */
SpeedReader::getAsString($subject, 'foo.bar.arrayAccess.hello');       /* string(5) "there"     */

SpeedReader::getAsFloat()

Gets the value, casted to float, at the given path. If no fallback is supplied, 0.0 will be returned., (*7)

SpeedReader::getAsFloat($subject, 'foo.bar.float');               /* double(456.7)  */
SpeedReader::getAsFloat($subject, 'foo.bar.float', 99.9);         /* double(456.7)  */
SpeedReader::getAsFloat($subject, 'not.found', 99.9);             /* double(99.9)   */
SpeedReader::getAsFloat($subject, 'not.found');                   /* double(0)      */
SpeedReader::getAsFloat($subject, 'foo.bar.object.foo');          /* double(99)     */
SpeedReader::getAsFloat($subject, 'foo.bar.int');                 /* double(123)    */
SpeedReader::getAsFloat($subject, 'foo.bar.bool');                /* double(1)      */
SpeedReader::getAsFloat($subject, 'foo.bar.object', 99.9);        /* double(99.9)   */
SpeedReader::getAsFloat($subject, 'foo.bar.array', 99.9);         /* double(99.9)   */
SpeedReader::getAsFloat($subject, 'foo.bar.string');              /* double(0)      */
SpeedReader::getAsFloat($subject, 'foo.bar.arrayAccess', 99.9);   /* double(99.9)   */
SpeedReader::getAsFloat($subject, 'foo.bar.arrayAccess.hello');   /* double(0)      */

SpeedReader::getAsBoolean()

Gets the value, casted to boolean, at the given path. If no fallback is supplied, false will be returned., (*8)

SpeedReader::getAsBoolean($subject, 'foo.bar.float');               /* bool(true)  */
SpeedReader::getAsBoolean($subject, 'foo.bar.float', true);         /* bool(true)  */
SpeedReader::getAsBoolean($subject, 'not.found', true);             /* bool(true)  */
SpeedReader::getAsBoolean($subject, 'not.found');                   /* bool(false) */
SpeedReader::getAsBoolean($subject, 'foo.bar.object.foo');          /* bool(true)  */
SpeedReader::getAsBoolean($subject, 'foo.bar.int');                 /* bool(true)  */
SpeedReader::getAsBoolean($subject, 'foo.bar.bool');                /* bool(true)  */
SpeedReader::getAsBoolean($subject, 'foo.bar.object', true);        /* bool(true)  */
SpeedReader::getAsBoolean($subject, 'foo.bar.array', true);         /* bool(true)  */
SpeedReader::getAsBoolean($subject, 'foo.bar.string');              /* bool(true)  */
SpeedReader::getAsBoolean($subject, 'foo.bar.arrayAccess', true);   /* bool(true)  */
SpeedReader::getAsBoolean($subject, 'foo.bar.arrayAccess.hello');   /* bool(true)  */

SpeedReader::getAsArray()

Gets the value, casted to array, at the given path. If no fallback is supplied, an empty array will be returned., (*9)

SpeedReader::getAsArray($subject, 'foo.bar.float');                        /* array(0) {}  */
SpeedReader::getAsArray($subject, 'foo.bar.float', array('foobar'));       /* array(1) { [0] => string(6) "foobar" }  */
SpeedReader::getAsArray($subject, 'not.found', array('foobar'));           /* array(1) { [0] => string(6) "foobar" }  */
SpeedReader::getAsArray($subject, 'not.found');                            /* array(0) {}  */
SpeedReader::getAsArray($subject, 'foo.bar.object.foo');                   /* array(0) {}  */
SpeedReader::getAsArray($subject, 'foo.bar.int');                          /* array(0) {}  */
SpeedReader::getAsArray($subject, 'foo.bar.bool');                         /* array(0) {}  */
SpeedReader::getAsArray($subject, 'foo.bar.object', array('foobar'));      /* array(1) { [0] => string(6) "foobar" }  */
SpeedReader::getAsArray($subject, 'foo.bar.array', array('foobar'));       /* array(2) { [0] => string(3) "foo" [1] => string(3) "bar" }
SpeedReader::getAsArray($subject, 'foo.bar.string');                       /* array(0) {}  */
SpeedReader::getAsArray($subject, 'foo.bar.arrayAccess', array('foobar')); /* array(1) { [0] => string(6) "foobar" }  */
SpeedReader::getAsArray($subject, 'foo.bar.arrayAccess.hello');            /* array(0) {}  */

SpeedReader::get()

Gets the value at the given path. If no fallback is supplied, null will be returned., (*10)

SpeedReader::get($subject, 'foo.bar.float');                    /* double(456.7)  */
SpeedReader::get($subject, 'foo.bar.float', 567.8);             /* double(456.7) */
SpeedReader::get($subject, 'not.found', 'foobar');              /* string(6) "foobar" */
SpeedReader::get($subject, 'not.found');                        /* NULL  */
SpeedReader::get($subject, 'foo.bar.object.foo');               /* int(99)  */
SpeedReader::get($subject, 'foo.bar.int');                      /* int(123)  */
SpeedReader::get($subject, 'foo.bar.bool');                     /* array(1) { [0] => string(6) "foobar" } */
SpeedReader::get($subject, 'foo.bar.object', null);             /* class stdClass#2 (1) { public $foo => int(99) }  */
SpeedReader::get($subject, 'foo.bar.array', array('foobar'));   /* array(2) { [0] => string(3) "foo" [1] => string(3) "bar" }
SpeedReader::get($subject, 'foo.bar.string');                   /* string(6) "hello!"  */
SpeedReader::get($subject, 'foo.bar.arrayAccess', null);        /* class ArrayIterator#3 (1) { ...   */
SpeedReader::get($subject, 'foo.bar.arrayAccess.hello');        /* string(5) "there"  */

SpeedReader::has()

Determines if the subject contains a value (including null) at the given path., (*11)

SpeedReader::has($subject, 'foo.bar.float');              /* bool(true)  */
SpeedReader::has($subject, 'foo.bar.float');              /* bool(true)  */
SpeedReader::has($subject, 'not.found');                  /* bool(false) */
SpeedReader::has($subject, 'foo.bar.object.foo');         /* bool(true)  */
SpeedReader::has($subject, 'foo.bar.int');                /* bool(true)  */
SpeedReader::has($subject, 'foo.bar.bool');               /* bool(true)  */
SpeedReader::has($subject, 'foo.bar.object');             /* bool(true)  */
SpeedReader::has($subject, 'foo.bar.array');              /* bool(true)  */
SpeedReader::has($subject, 'foo.bar.string');             /* bool(true)  */
SpeedReader::has($subject, 'foo.bar.arrayAccess');        /* bool(true)  */
SpeedReader::has($subject, 'foo.bar.arrayAccess.hello');  /* bool(true)  */

About

Requirements

SpeedReader works with PHP 5.3 and above., (*12)

License

SpeedReader is licensed under the Mozilla Public License 2.0. See the LICENSE file for details., (*13)

The Versions

24/08 2017

dev-develop

dev-develop https://github.com/ehough/speedreader

Nested-property accessor with an emphasis on performance

  Sources   Download

MPL-2.0

The Requires

 

The Development Requires

24/08 2017

dev-master

9999999-dev https://github.com/ehough/speedreader

Nested-property accessor with an emphasis on performance

  Sources   Download

MPL-2.0

The Requires

 

The Development Requires

24/08 2017

v1.0.0

1.0.0.0 https://github.com/ehough/speedreader

Nested-property accessor with an emphasis on performance

  Sources   Download

MPL-2.0

The Requires

 

The Development Requires