我也使用过类似 jQuery 的单一方法解决方案,并且确实喜欢它,但阅读了一些帖子,出于某种原因,我认为其他人认为这是不好的做法。但是现在我再次阅读并遇到了这篇文章。
我的解决方案有(免责声明:压缩格式)
class Person {
protected $name;
protected $age;
public function name($value = null) {
if (null !== $value) {
$this->name = (string) $value;
return $this;
}
return $this->name;
}
public function age($value = null) {
if (null !== $value) {
$this->age = (int) $value;
return $this;
}
return $this->age;
}
}
我确实喜欢这种类型的课堂界面
$person1 = new Person();
$person1->name('Bob')->age(30);
echo $person->name();
一般的想法是,如果 $value 为 null 然后发回属性,否则将属性设置为 $value,可能是类型转换它或通过一些其他过滤器运行它,然后返回类的实例。
现在我正在重新访问它,我不确定为什么这会如此糟糕,除非您可能会将您的 IDE 与返回值混淆,因为它要么是您的属性数据类型,要么是您的类。
需要将值设置为 false 仍然可以在这里工作,在(对我而言)需要设置为 null 的边缘情况下,我只需一次性/逐个更改默认/条件检查以适应。
我确实很欣赏不必编写两个方法及其相关的 phpdoc 块的较少样板感觉。