我正在尝试创建一个方法,该方法允许我使用 setVal() 函数在类中设置属性,如果用户试图从类外部设置值而不使用“forceSet”函数,那么它将抛出一个例外。
问题是即使 $forceSet 为真,它也会抛出异常。如果我在类中手动设置属性以具有私有访问权限,那么一切正常,但这不是一个选项,因为我希望能够在此类中动态设置各种属性。
class test
{
private $_allowedCols = array('title', 'name', 'surname');
public function __set($n,$v)
{
$this->setVal($n, $v);
}
public function setVal($name, $value, $forceSet=false)
{
if (!$forceSet && !in_array($this->_allowedCols, $name))
{
throw new Exception('cant set value');
}
$this->$name = $value;
}
}
$b = new test;
$b->setVal('blah', 'test', true);
print_r($b);
exit;
我想要做的是将 $_POST 中的所有值设置为对象的属性。我想检查 $_allowedCols 以确保只有我想要的值被放入对象中,但有时我可能想从代码中强制输入不在 $_allowedCols 中的值。
有任何想法吗?