有类似的问题,例如this,但这是不同的——它是关于使用setter验证构造函数参数。
这是我的构造函数:
public function __construct( $foo, $bar ) {
try {
$this->set_foo( $foo );
$this->set_bar( $bar );
} catch( Exception $e ) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
这是设置器之一(伪代码):
public function set_foo( $foo ) {
if( $foo fails validation checks ) {
throw new InvalidArgumentException( '$foo is not valid' );
}
}
在我的班级中,有两个以上的类变量,每个变量都有自己的一组验证检查。我的问题也是如此(嗯,真的是 2 个):
为什么我要更改我的代码以使用 PHP 魔术 getter/setter(此处)并具有杂乱的__set( $name, $value )
功能?此函数中必须有一组条件来确定所需的验证类型,那么为什么要在这种情况下这样做呢?
这些魔术方法的示例用例是什么?当然,只有少数班级成员或没有验证时,它们才会是一个不错的选择?
非常感谢。