guidovanbiemen / setngeti
此包已被弃用,不再维护。没有建议的替代包。
PHP 5.4 的获取器和设置器
0.0.0
2013-04-21 19:23 UTC
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2020-08-05 05:49:41 UTC
README
使用 SetnGeti 允许您在 PHP 5.4+ 项目中定义对象属性的自动设置器和获取器。
自动设置器和获取器方法
通过使用 SetnGeti 方法,您可以通过仅向要公开的属性添加 @get 和/或 @set 标签来消除通常编写大量无用的获取和设置方法的努力。
class User { use \SetnGeti\Methods; /** * Sample property * * @get * @set * @var string */ private $username; } $user = new User(); $user->setUsername('johndoe'); echo $user->getUsername();
仅向属性添加 @get 标签,可以确保该属性仅可用于只读访问。另一方面,仅带 @set 标签的属性将是只写。
尝试访问没有 @set 的属性的 setMethod() 或没有 @get 的属性的 getMethod(),将引发 RuntimeException。
自动过滤和类型转换
当使用自动设置器设置属性时,您可以使用 @var 标签控制属性的 数据类型。@var 标签可以是以下类型之一
- 类名
- 接口名
- mixed
- 布尔型 (或 bool)
- 整型 (或 int)
- 双精度浮点型
- 字符串
- 数组
- 对象
- 资源
- null
设置属性时,其值将被测试,如果是标量值,将被转换为所需的类型。
将对象设置到属性值时,它将根据所需的类或接口名称进行验证。如果传递了不兼容的对象,将引发 InvalidArgumentException。
设置器方法链
SetnGeti 的自动设置器方法默认通过返回所有者对象来实现方法链。这允许您编写如下代码
$user->setUsername('johndoe') ->setPassword('secret') ->store();
属性访问而不是获取器和设置器方法
作为将获取器和设置器方法添加到您的属性的一种替代方案,您可能希望在不将其标记为 public 的情况下从外部访问您的属性,这样您仍然可以控制对它们的访问。
为此,请添加 \SetnGeti\Properties 特性。现在,只要您添加了适当的 @get 和 @set 标签,您就可以访问私有和受保护的属性。
我不认为这种方法通常是好主意,但对于依赖于公共对象属性的遗留代码库,这可能是一个开始控制属性访问的合理选项。