Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera beleza?
me deparei em uma situação onde eu preciso fazer a chamada de um método quantas vezes eu quiser para a mesma instancia só que isso ele tem que ir "acumulando".
exemplo:
Class Write{
private $obj;
function __construct(Text $obj){
$this->obj = $obj;
}
public function add($text){
$obj->add($text);
}
}
$sentence = new Write(New Text());
$sentence->add('teste1 \n');
$sentence->add('teste2 \n');
$sentence->add('teste2 \n');veja que eu passo um outro objeto do tipo Text que não me importa a estrutura dele para o exemplo e esse objeto que adiciona o texto pra mim.
só que da maneira que escrevi ele só vai mostrar o "teste2" pois como ele é o último ele vai sobrescrever os demais e eu precisava na verdade mostrar os 3 resultados mas com a mesma instancia.
ta meio difícil explicar mas eu tenho dúvida de como posso aplicar isso.
vlw, abraços;
Não poderia utilizar um Iterator (ArrayIterator, por exemplo) para criar uma lista, e depois só imprimir todos os valores? Também poderá usar fluent interfaces para encadear os métodos. Basta adicionar o retorno do objeto.
Já tentou ir adicionando em um array?
Eu até posso retornar mas o problema é que meu método não tem exatamente um return como vocês viram.
ele vai chamar um método de um objeto que eu desconheço suas ações até chegar o resultado final.
Não poderia utilizar um Iterator (ArrayIterator, por exemplo) para criar uma lista, e depois só imprimir todos os valores?
Ainda tenho a dúvida quanto "imprimir" valores já que o meu método não tem return e quem vai retornar seria o text onde eu não tenho controle.
vou dar uma olhada sobre fluent interfaces.
Adivinhar como o contêiner de salvamento se comporta vai ser complicado, né??
Se [inline]$obj->add($text)[/inline] sobrescreve o conteúdo já salvo, você deverá consultar a API de [inline]$obj[/inline] para verificar como você faz para acrescentar conteúdo sem remover o que já existe. Nesse contexto, eu vejo as possiblidades de existirem [inline]$obj->append($text)[/inline] ou um parâmetro adicional em add, algo como [inline]$obj->add($text, OBJ_OPTIONS_APPEND)[/inline]
Evandro, o Texto se comporta de maneira correta eu preciso mesmo é fazer a chamada do meu Objeto Write.
Estou pensando em criar um novo método apenas para finalizar, ai gravo tudo no array e depois só leio.
o que esta me confundindo é eu não ter um return.
Se o método é um set ele não tem mesmo return, apenas side-effects em que altera o estado do objeto.
Já ouviu falar do método __toString() me parece encaixar bem na sua situação.
Já tentou ir adicionando em um array?