usmanhalalit / get-set-go
Dynamic Setter-Getter for PHP 5.4+
Installs: 11 922
Dependents: 1
Suggesters: 0
Security: 0
Stars: 18
Watchers: 4
Forks: 5
Open Issues: 0
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-10-29 00:21:46 UTC
README
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.
Installation
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.
Usage
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.
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.
/** * 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){}
/** * 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.