Fala galera do forum!
Solução do exercício é o seguinte:
(Existem algumas diferenças no nome das propriedades dos exemplos aqui citados para as propriedades do vídeo!)
1 - Você vai precisar alterar as anotações que o professor pediu para implementar na classe, são essas daqui olha:
/**
* Class Endereco
*
* @package SeuDominio\Banco\Modelo
* @property-read string $rua
* @property-read string $numero
* @property-read string $pais
* @property-read string $cidade
* @property-read string $cep
*/
class Endereco
{
...
}
2 - Se olhar direitinho você vai quer que elas estão dizendo que a property (a propriedade) é apenas de leitura! Agora que vamos utilizar o método __set
será necessário alterar as anotações de property-read para property:
/**
* Class Endereco
*
* @package SeuDominio\Banco\Modelo
* @property string $rua
* @property string $numero
* @property string $pais
* @property string $cidade
* @property string $cep
*/
class Endereco
{
...
}
3 - Agora vamos implementar o método mágico em questão:
public function __set(string $name, $value): void
{
$this->$name = $value;
}
4 - Pronto! Só falta testar:
<?php
useSeuDominio\Banco\Modelo\Endereco;
$endereco = new Endereco('Rua dos Bolseiros', '1', 'Terra Média', 'Condado dos Hobbits', '12345');
echo "Antes de alterar: " . $endereco->cidade . PHP_EOL;
$endereco->cidade = 'Mordor';
echo "Depois de alterar: " . $endereco->cidade . PHP_EOL;
Saída
Antes de alterar: Condado dos Hobbits
Depois de alterar: Mordor
Obrigado por ler!