2017 © Pedro Peláez
 

library helpers-gettersetteraccessor

Helper class offering functionality to define setter and getter class methods with a minimum of expressive code.

image

danwe/helpers-gettersetteraccessor

Helper class offering functionality to define setter and getter class methods with a minimum of expressive code.

  • Monday, June 22, 2015
  • by Danwe
  • Repository
  • 1 Watchers
  • 0 Stars
  • 34 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

php-Helpers-GetterSetterAccessor

Helper class offering functionality to define combined getter and setter class methods with a minimum of expressive code. An example for a "combined getter and setter" would be User::age( $age=null ) for getting or setting an user's age instead of having two separate methods User::getAge() and User::setAge( $age )., (*1)

Latest Stable Version Build Status Coverage Status Download count, (*2)

Disclaimer

This library is in no way suggesting that combined getters and setters are superior to having separate methods. There might be use cases where each way has certain advantages and disatvantages. Choosing one might often just be a question of the developer's own taste of style., (*3)

Usage

See the following usage example:, (*4)

<?php

use Danwe\Helpers\GetterSetterAccessor;

class Options {
  protected $formatter;
  protected $name = 'Php';
  protected $length;

  public function formatter( Formatter $value = null ) {
    return $this->getterSetter( __FUNCTION__ )
      ->initially( function() {
        return new Formatter();
      } )
      ->getOrSet( $value );
  }

  public function name( $value = null ) {
    return $this->getterSetter( __FUNCTION__ )
      ->ofType( 'string' )
      ->getOrSet( $value );
  }

  public function length( $value = null ) {
    return $this->getterSetter( __FUNCTION__ )
      ->ofType( 'int' )
      ->initially( 42 ) // Equivalent to declaring "protected $length = 42" on top
      ->getOrSet( $value );
  }

  protected function getterSetter( $accessProperty ) {
    if( !$this->getterSetter ) {
      $this->getterSetter = new GetterSetterAccessor( $this );
    }
    return $this->getterSetter->property( $accessProperty );
  }
}

Performance Implications

You should be aware that GetterSetterAccessor is using PHP's reflection facilities internally to set/get property values., (*5)

This package contains a benchmark to test a class using this library versus a simple means implementation. It can be run via:, (*6)

php vendor/bin/athletic -p benchmarks

Example output:, (*7)

Method Name                                 Iterations   Average Time      Ops/sec   
------------------------------------------- ----------- ----------------- ---------
hardCodedSetterGetter                      : [   6,000] [0.0000072908004] [137,159]
setterGetterUsingThisLibrary_normalUsage   : [   6,000] [0.0000241236687] [ 41,453]
setterGetterUsingThisLibrary_extensiveUsage: [   6,000] [0.0000284811258] [ 35,110]

The benchmark result indicated that using GetterSetterAccessor is three to four times slower than using hard coded methods doing the same thing (this might vary depending on the PHP version and the system). If a method is expected to be called several thousand times than this could become an actual concern., (*8)

TODOs

  • Allow to set more than one type for ofType.
  • Allow setting null values by defining another value as the one triggering the getter.

The Versions

22/06 2015

dev-master

9999999-dev https://github.com/DanweDE/php-helpers-gettersetteraccessor

Helper class offering functionality to define setter and getter class methods with a minimum of expressive code.

  Sources   Download

MIT License

The Requires

  • php >=5.3.0

 

The Development Requires

helper class getter setter method

22/06 2015

v1.0.1

1.0.1.0 https://github.com/DanweDE/php-helpers-gettersetteraccessor

Helper class offering functionality to define setter and getter class methods with a minimum of expressive code.

  Sources   Download

MIT License

The Requires

  • php >=5.3.0

 

The Development Requires

helper class getter setter method

22/06 2015

v1.0.0

1.0.0.0 https://github.com/DanweDE/php-helpers-gettersetteraccessor

Helper class offering functionality to define setter and getter class methods with a minimum of expressive code.

  Sources   Download

MIT License

The Requires

  • php >=5.3.0

 

The Development Requires

helper class getter setter method

22/06 2015

1.0.0

1.0.0.0 https://github.com/DanweDE/php-helpers-gettersetteraccessor

Helper class offering functionality to define setter and getter class methods with a minimum of expressive code.

  Sources   Download

MIT License

The Requires

  • php >=5.3.0

 

The Development Requires

helper class getter setter method