thisなどの同様の質問がありますが、これは異なります-セッターを使用してコンストラクターパラメーターを検証することに関するものです。
ここに私のコンストラクタがあります:
public function __construct( $foo, $bar ) {
try {
$this->set_foo( $foo );
$this->set_bar( $bar );
} catch( Exception $e ) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
そして、これがセッターの1つです(疑似コード):
public function set_foo( $foo ) {
if( $foo fails validation checks ) {
throw new InvalidArgumentException( '$foo is not valid' );
}
}
私のクラスには 2 つ以上のクラス変数があり、それぞれに独自の検証チェック セットがあります。だから私の質問です(まあ、本当に2):
PHP マジック getter/setter ( here ) を使用するようにコードを変更し、雑然とした__set( $name, $value )
関数を使用する必要があるのはなぜですか? この関数には、必要な検証の種類を決定するための一連の条件が必要になるのに、なぜこの状況でこれを行う必要があるのでしょうか?
これらの魔法の方法の使用例は何ですか? 確かに、少数のクラス メンバーが存在する場合、または検証がない場合にのみ、適切な選択になるでしょうか?
どうもありがとう。