1
resposta

[Projeto] Solução __set

<?php

namespace Alura\Banco\Modelo; class Endereco { private string $cidade; private string $bairro; private string $rua; private string $numero;

public function __construct(string $cidade, string $bairro, string $rua, string $numero)
{
    $this->cidade = $cidade;
    $this->bairro = $bairro;
    $this->rua = $rua;
    $this->numero = $numero;
}

public function recuperaCidade(): string
{
    return $this->cidade;
}

public function recuperaBairro(): string
{
    return $this->bairro;
}

public function recuperaRua(): string
{
    return $this->rua;
}

public function recuperaNumero(): string
{
    return $this->numero;
}

public function __toString():string
{
    return "{$this->rua}, {$this->numero}, {$this->bairro}, {$this->cidade}". PHP_EOL;
}

public function __get($nomeAtributo)
{
    $metodo = 'recupera'. ucfirst($nomeAtributo);
    return $this->$metodo();
}
public function __set($name, $value): void
{
    $metodo = 'set' . ucfirst($name);
    $this->$metodo($value);
}
public function setCidade(string $cidade): void
{
    $this->cidade = $cidade;
}

public function setBairro(string $bairro): void
{
    $this->bairro = $bairro;
}

public function setRua(string $rua): void
{
    $this->rua = $rua;
}

public function setNumero(string $numero): void
{
    $this->numero = $numero;
}

}

<?php

use Alura\Banco\Modelo\Endereco;

require_once'autoload.php';

$Endereco1 = new Endereco('NOVA PONTE ', 'MEDALHA','MANUEL','148');
echo $Endereco1;

echo''.PHP_EOL;

echo $Endereco1->rua. PHP_EOL;
echo $Endereco1->bairro. PHP_EOL;
echo $Endereco1->cidade. PHP_EOL;
echo $Endereco1->numero. PHP_EOL;

echo''.PHP_EOL;

$Endereco1->cidade = 'RIO DE JANEITO';

echo "CIDADE RECEBEU : ".$Endereco1->cidade . PHP_EOL;

echo''.PHP_EOL;

echo $Endereco1;
1 resposta

Olá Thiago, tudo bem?

Pelo código que você postou, é possível perceber que você criou uma classe Endereco que possui alguns atributos e métodos, incluindo o método mágico __set, que é responsável por setar os valores dos atributos da classe.

No seu exemplo, você criou quatro métodos set para cada um dos atributos da classe Endereco. Esses métodos são chamados pelo método __set para setar os valores dos atributos. É uma boa prática criar esses métodos para garantir que os valores setados estejam dentro dos padrões esperados.

Além disso, você também criou métodos get para cada um dos atributos, que são chamados pelo método mágico __get para recuperar os valores dos atributos.

Por fim, você criou um objeto da classe Endereco e utilizou os métodos echo para imprimir o endereço completo e os valores dos atributos. Também foi possível ver que você setou um novo valor para o atributo cidade utilizando o método setCidade.

Muito bom!

Bons estudos