1
resposta

iterar objeto composto

Boa tarde, estou com uma dúvida, sobre como definir uma propriedade de um objeto composto, vou tentar reproduzir um exemplo:

Pessoa.php

<?php
class Pessoa{
private NomeCompleto $nomeCompleto

public function __construct(NomeCompleto $nomeCompleto){
$this->nomeCompleto = $nomeComopleto;
}
public function __get($atributo){
return $this->$atributo ;
}
public function __set($atributo, $valor){
$this->$atributo = $valor;
}
}

NomeCompleto.php

<?php
class NomeCompleto{
private string $nome;
private ?string $sobrenome;

public function __construct($nome, $sobrenome){
$this->nome = $nome;
$this->sobrenome = $sobrenome;
}
public function __get($atributo){
return $this->$atributo ;
}
public function __set($atributo, $valor){
$this->$atributo = $valor;
}
}

Sem se preocupar com a funcionalidade do exemplo, digamos que a classe Pessoa possua não só uma propriedade ($nomeCompleto) e sim uma série, que devem ser uma instancia de NomeCompleto. E que eu queira alterar o $sobrenome de todos os atributos, eu tentei da seguinte forma:

teste.php

<?php

$pessoa = new Pessoa(new NomeCompleto("João", NULL));

foreach($pessoa as $chave => $valor){
    $valor->sobrenome = "Silva";
}

E assim também:

teste2.php

<?php

$pessoa = new Pessoa(new NomeCompleto("João", NULL));

foreach($pessoa as $chave => $valor){
    $chave->sobrenome = "Silva";
}

e em ambos não deu certo, o que está errado?

1 resposta

Olá Marcos,

Acredito que esse tópico seja igual a esse outro tópico seu, caso sim encerra esse aqui por favor. Qualquer coisa se a dúvida permanecer você pode continuar por lá.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software