ac / model-traits
减少创建模型时的样板代码的特性。
0.2.0
2014-01-31 19:49 UTC
Requires
- php: >=5.4.0
- doctrine/annotations: >=1.1.2
This package is not auto-updated.
Last update: 2024-09-24 03:44:00 UTC
README
这是一个用于复用模型类中一些常用模式的简便库。每个特性定义在下面的部分。
安装
在您的 composer.json
文件中 require "ac/model-traits": "0.2.0"
并运行 composer update ac/model-traits
。
AutoGetterSetterTrait
这将使用一些反射魔法来允许您为任何属性使用getter/setter,而无需自己定义。当然,您仍然可以显式地覆盖任何属性的getter/setter,以便在其中添加或需要自定义逻辑。其中包含一些假设
public
和protected
属性均可设置和获取private
属性仅可获取
示例
use AC\ModelTraits\AutoGetterSetterTrait; class MyModel { use AutoGetterSetterTrait; private $id; protected $name; protected $age; public function __construct($id = null) { $this->id = $id; } } $m = new MyModel(5); $m->setName('John'); $m->setAge(23); echo $m->getId(); //5 echo $m->getName(); //John echo $m->getAge(); //23
AnnotatedGetterSetterTrait
如果您想更精确地指定哪些属性将创建getter/setter,可以使用基于注解的特性
use AC\ModelTraits\AnnotatedGetterSetterTrait; use AC\ModelTraits\Annotation as MT; class MyModel { use AnnotatedGetterSetterTrait; /** * @MT\Getter */ private $id /** * @MT\GetterAndSetter */ private $name; /** * @MT\GetterAndSetter */ protected $age; }
属性可以具有任何访问级别(public、protected 或 private)和访问方法(getter 和/或 setter)的组合。
ArrayFactoryTrait
这添加了一个静态工厂方法,允许通过属性名到值的映射来创建模型的一个实例。它假设任何展示模型在其构造函数中不需要自定义参数。这将允许在创建期间设置私有属性。
示例
use AC\ModelTraits\GetterSetterTrait use AC\ModelTraits\ArrayFactoryTrait; class MyModel { use ArrayFactoryTrait, GetterSetterTrait; private $id; protected $name; protected $description; } $m = MyModel::createFromArray([ 'id' => 5, 'name' => 'John', 'age' => 23 ]); echo $m->getId(); //5 echo $m->getName(); //John echo $m->getAge(); //23