私が正しく理解していれば、__ set()を使用すると、クラス変数をその場で作成できます。これはパブリックになり、プライベート/保護されたプロパティにアクセスできます。
使用しているようです:
__set($name,$value) {
$this->data[$name] = $value;
}
また:
__set($name,$value) {
$this->$name = $value;
}
...両方とも、あらゆる種類のゴミを出し入れします。
個別のセッター(ミューテーター)を使用すると、保護/プライベートプロパティごとに1つ、個別の検証コントロールがありますが、一連のセッターを作成する必要があります。
魔法の__set()を利用し、プロパティに応じて検証する方法はありますか?
たとえば、言いましょう
class stuff {
private $name; // alphabet, limit 10 chars
private $size; // integers 1 - 10;
private $price; // decimals 0.000 - 999.999
__set($property,$value) {
$this->$property = $value;
}
}
$thing = new stuff();
$thing->name = 1234;
$thing->size = 'b';
$thing->price = -40;
悪い割り当てをどのように検証しますか?