1
resposta

Desafio set

Encontrei a seguinte solução...

...
    public function __set(string $nomeAtributo,string $valorAtributo)
    {
        $this->$nomeAtributo = $valorAtributo;
    }
...
<?php

require_once 'autoload.php';

use Alura\Banco\Modelo\Endereco;

$umEndereco = new Endereco('Curitiba', 'bacacheri', 'novepontocinco', '1267d');

echo $umEndereco. PHP_EOL;

$umEndereco->__set('rua', 'Rua das goiabas');

echo $umEndereco;

Retorna o novo endereço

1 resposta

Olá, tudo bem?

Muito boa sua solução! Parabéns pelo seu empenho =)

Fica como dica: A forma como você implementou funciona e está bem legal, mas você não está usando o "poder" do método mágico __set, pois você está chamando a função e passando dois parâmetros.

Uma outra forma de você implementar seria da seguinte maneira:

Endereco.php

public function __set(string $nomeDoAtributo, string $valor)
    {
       $this->nomeDoAtributo = $valor;
    }

banco.php

<?php

require_once 'autoload.php';

use Alura\Banco\Modelo\Endereco;

$umEndereco = new Endereco('Curitiba', 'bacacheri', 'novepontocinco', '1267d');

// veja que você não precisa passar os dois parâmetros, você acessa o atributo "rua' diretamente
$umEndereco->rua = 'Rua das goiabas';

echo $umEndereco;

Caso tenha mais curiosidade, você pode ler mais sobre os métodos mágicos na documentação do PHP

Espero ter ajudado, bons estudos :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓