setVal()関数を使用してクラス内でプロパティを設定できるメソッドを作成しようとしています。ユーザーが「forceSet」関数を使用せずにクラス外から値を設定しようとすると、例外。
問題は、$forceSetがtrueであっても例外をスローすることです。クラスでプロパティを手動でプライベートアクセスに設定すると、すべてが正常に機能しますが、このクラスでさまざまなプロパティを動的に設定できるようにしたいので、これはオプションではありません。
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にないコードから値を強制的に入力したい場合があります。
何か案は?