GetSetGo
A dynamic setter-getter library for PHP 5.4+., (*1)
You can use methods like setFoo('bar')
and getFoo()
, which you DON'T have to create (in your class). GetSetGo will make these methods work for you automatically as long as you have a $foo
property in your class., (*2)
It makes use of Traits, so using
it is super simple, you don't have to extend any class, as you can extend a single class only, we don't force you to use ours.
You can restrict to only getter only or you can specify a Type for property using annotations., (*3)
Installation
GetSetGo uses Composer to make hassles Go., (*4)
Learn to use composer and add this to require (in your composer.json):, (*5)
"usmanhalalit/get-set-go": "1.*@dev"
Library on Packagist., (*6)
Usage
Just add this in your classes:, (*7)
use \GetSetGo\SetterGetter;
Example:, (*8)
Class MyClass{
use \GetSetGo\SetterGetter;
protected $foo;
}
Now use it as, (*9)
$myClass = new MyClass;
$myClass->setFoo('bar');
echo $myClass->getFoo();
That's basically it., (*10)
Restrict Getter or Setter or Both
You can use annotation in you class property if you want to disable setter, getter or both using @setter
and @getter
annotation variables., (*11)
/**
* We can't use setSomeProperty() anymore.
*
* @var
* @setter false
*/
protected $someProperty;
/**
* We can't use getSomeProperty() anymore.
*
* @var \stdClass
* @getter false
*/
protected $someProperty;
/**
* We can't use setSomeProperty() or getSomeProperty().
*
* @getter false
* @setter false
*/
protected $someProperty;
Force a Type or Class
You can specify a type for the property using @var
annotation variable, so setter will take only a value of this type, else it will throw an exception. The code below will work similar as public function setSomeProperty(stdClass $value){}
, (*12)
/**
* Should be an instance of stdClass only.
*
* @var \stdClass
*/
protected $shouldBeStdClass;
/**
* Should be an array only.
*
* @var Array
*/
protected $shouldBeArray;
/**
* Should be a string only
*
* @var String
*/
protected $shouldBeString;
/**
* Should be a number only.
*
* @var Number
*/
protected $shouldBeNumber;
/**
* Should be an object only.
*
* @var Object
*/
protected $shouldBeObject;
Notes
GetSetGo assumes that you use proper camelCase. So name your properties like $pdoInstance
(not $PDOInstance
) and call setPdoInstance()
method., (*13)