Olá
Implementei da seguinte forma:
public function __set($name, $value)
{
$this->$name = $value;
}
E depois em enderecos.php:
$endereco1->__set('cidade', 'Rio');
$endereco1->cidade = 'São Paulo';
var_dump($endereco1);
echo $endereco1->cidade;
Dá para atribuir o valor a cidade dessas duas formas? Existem diferenças? Qual a mais correcta?
Ao nível da segurança não seria melhor implementar método altera (rua, numero, cidade, bairro) na classe Endereco e depois ao utilizar o método mágico __set recorrer a esses metodos altera, dessa forma podendo utilizar filtros de segurança e regras de negócio nos mesmo?
E se passarmos um atributo que é imutável para o __set(), dentro do método __set, teremos realizar um if? Do género:
public function __set($name, $value)
{
if($name === 'cidade') {
echo "A cidade não pode ser alterada";
return;
} else {
$this->$name = $value;
}
}
Obrigado.