Non so come in altre lingue, ma in PHP mi sembra che siano molto insicuri come impostare il valore di qualsiasi variabile membro - perché un setter non può facilmente convalidare l'input per molte variabili (soprattutto se sono di vario tipo)
La maggior parte degli esempi di setter magia dicono solo
public $prop = array();
public function __set($name, $value)
{
$this->prop[$name] = $value;
}
Non c'è alcuna convalida. Ed è sbagliato.
Anche se aggiungessi la convalida, non posso ancora convalidare facilmente tutti i tipi, perché il codice della funzione sarebbe molto lungo.
Problema
- È un modo per rendere sicuri i setter della magia?
- o è davvero meglio evitarne l'utilizzo (definire il proprio setter per ogni variabile membro)?