Boa noite, estou com uma dúvida, sobre como definir uma propriedade de um objeto composto, vou tentar reproduzir um exemplo:
Pessoa.php
<?php
class Pessoa extends \IteratorIterator{
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;
}
public function getIterator()
{
return new \ArrayIterator($this->sobrenome);
}
}
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 $valor){
$valor->sobrenome = "Silva";
}
e não deu certo, o que está errado?