usmanhalalit / get-set-go
PHP 5.4+ 动态设置器-获取器
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-08-29 00:03:22 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.
安装
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;
示例
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.