A dynamic setter-getter library for PHP 5.4+.
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.
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.
GetSetGo uses Composer to make hassles Go.
Learn to use composer and add this to require (in your composer.json):
"usmanhalalit/get-set-go": "1.*@dev"
Library on Packagist.
Just add this in your classes:
use \GetSetGo\SetterGetter;
Example:
Class MyClass{
use \GetSetGo\SetterGetter;
protected $foo;
}
Now use it as
$myClass = new MyClass;
$myClass->setFoo('bar');
echo $myClass->getFoo();
That's basically it.
You can use annotation in you class property if you want to disable setter, getter or both using @setter
and @getter
annotation variables.
/**
* 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;
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){}
/**
* 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;
GetSetGo assumes that you use proper camelCase. So name your properties like $pdoInstance
(not $PDOInstance
) and call setPdoInstance()
method.