私も単一メソッドの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 に設定する必要があるエッジケースでは、デフォルト/条件チェックを 1 回限り/ケースバイケースで変更するだけで対応できます。
2 つのメソッドとそれに関連付けられた phpdoc ブロックを記述する必要がないという定型的な感覚が少ないことに感謝しています。