2017 © Pedro Peláez
 

library php-getter-setter

PHP library to simplify getting and setting values in arrays and objects.

image

revinate/php-getter-setter

PHP library to simplify getting and setting values in arrays and objects.

  • Wednesday, March 9, 2016
  • by revinate
  • Repository
  • 51 Watchers
  • 1 Stars
  • 8,910 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 1 Forks
  • 1 Open issues
  • 7 Versions
  • 6 % Grown

The README.md

phpGetterSetter

PHP Library for simplifying getting and setting values in arrays or objects, (*1)

Summary

At its core, this library is composed of 3 function pairs:, (*2)

  • get / set -- functions to get and set nested values in an array, object, or class given a field name using dot notation
  • getValue / setValue -- functions to get and set values in an array, object, or class.
  • getValueByArrayPath / setValueByArrayPath -- used by get and set to access the nested values by specifying the path in an array.

Instalation

Use Composer:, (*3)

"require": {
    "revinate/php-getter-setter": "~0.2"
},

Usage

To make things easier, include the follow use statement at the top of your files:, (*4)

use Revinate\GetterSetter as gs;

get and set

Getting a Value

$name = gs\get($data, 'name');

Getting a Value with a default

$name = gs\get($data, 'count', 0);

Setting a Value

$updatedData = gs\set($data, 'count', 42);

Here is an example unit test to give a bit more context., (*5)

public function testExampleJson() {
    $json = '{"name":"example","type":"json","value":22}';
    $data = json_decode($json);
    $name = gs\get($data, 'name');
    $missing = gs\get($data, 'missing');
    $this->assertEquals('example', $name);
    $this->assertNull($missing);
}

Differences between objects and arrays

With setValue, an object will get updated when a field value is set. But it is different with arrays because they are immutable. Only the array returned from setValue will have the updated fields. Watch out for ArrayObjects, they will get updated just like normal objects., (*6)

Example Unit Test showing difference between objects and arrays:, (*7)

public function testExampleArrayVsObject() {
    $json      = '{"name":"example","type":"json","value":22}';
    $object    = json_decode($json);
    $array     = (array)$object;
    // The object gets updated as well
    $newObject = gs\set($object, 'type', 'Object');
    // Only the new array contains the update.
    $newArray  = gs\set($array, 'type', 'Array');
    $this->assertEquals($object, $newObject);
    $this->assertNotEquals($array, $newArray);
}

Getting and Setting Nested Values

getPathValue and setPathValue provide an easy shortcut for getting and setting nested values., (*8)

{
    "first_name" : "Joe",
    "last_name" : "Rock",
    "address" : {
        "street":"1 Main St.",
        "city":"Little Rock",
        "state":"Arkansas"
    },
    "profession":"Stone cutter"
}

Example accessing:, (*9)

$json = $this->getEmployeeJsonData();
$data = json_decode($json);
$this->assertEquals('Arkansas', gs\get($data, 'address.state'));
$this->assertNull(gs\get($data, 'address.zip'));

The notation is longer than $data->address->state, but it will not blow up where this will: $data->address->zip., (*10)

Support for Getters, Setters, Has'ers, and Is'ers.

These functions support getters, setters and magic methods use by many ORM systems like Doctrine., (*11)

Support for Magic methods like __get and __set

Example Data Class, (*12)

class MagicAccessTestClass {

    protected $values = array();

    function __get($name) {
        return $this->values[$name];
    }
    function __isset($name) {
        return isset($this->values[$name]);
    }
    function __set($name, $value) {
        $this->values[$name] = $value;
    }
}

Sample Usage:, (*13)

public function testMagicMethods() {
    $data = new MagicAccessTestClass();
    $data->first_name = 'Joe';
    $data->last_name = 'Rock';
    gs\set($data, 'profession', 'Stone cutter');
    gs\set($data, 'address', new MagicAccessTestClass());
    gs\setPathValue($data, 'address.city', 'Little Rock');
    $this->assertEquals('Joe', gs\get($data, 'first_name'));
    $this->assertEquals('Rock', gs\get($data, 'last_name'));
    $this->assertEquals('Little Rock', gs\get($data, 'address.city'));
}

The Versions

09/03 2016

dev-master

9999999-dev

PHP library to simplify getting and setting values in arrays and objects.

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Jason Dent

09/03 2016

0.2.3

0.2.3.0

PHP library to simplify getting and setting values in arrays and objects.

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Jason Dent

24/09 2015

0.2.2

0.2.2.0

PHP library to simplify getting and setting values in arrays and objects.

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Jason Dent

15/09 2015

0.2.1

0.2.1.0

PHP library to simplify getting and setting values in arrays and objects.

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Jason Dent

15/09 2015

0.2.0

0.2.0.0

PHP library to simplify getting and setting values in arrays and objects.

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Jason Dent

14/09 2015

0.1.1

0.1.1.0

PHP library to simplify getting and setting values in arrays and objects.

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Jason Dent

13/09 2015

0.1.0

0.1.0.0

PHP library to simplify getting and setting values in arrays and objects.

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Jason Dent