PHP

Simulando um With no PHP com Interfaces Fluentes


Esses dias estava conversando com um grande colega programador sobre a carência do comando With no PHP. wholesale jerseys Estive procurando por algum tempo e como não tive uma solução que me agradasse joguei a idéia para o limbo.

Até que ontem, em mais uma das minhas Dise?o noites de insônia, tive a idéia de simular o comando With com umas das melhores práticas de legibilidade de código: Fluents Interfaces, ou Interfaces Fluentes.

Primeiro Passo: Falando de Fluents Interfaces e PHP

Acredito que para muitos o termo “Interfaces Fluentes” não é novidade alguma. Mas, Theme para quem não conhece, trata-se de uma maneira mais intuitiva de construir suas classes. Como a implementação de POO no PHP4 era deficiente (leia-se precária) não era possível a prática de Interfaces Fluentes graças à seguinte limitação: no PHP4 você não consegue criar uma referência direta ao objeto através do retorno dos seus próprios métodos.

Mas no PHP5 e sua OO totalmente reescrita, eis que tudo (ou quase) se fez novo. Agora, como a deficiência acima foi suprida, podemos facilmente fazer referencia direta ao objeto retornado por um dos seus próprios métodos.

Exemplo:

// Classe que retorna a própria referencia em todos os métodos
class escreveONomeCompletoUsandoInterfaceFluente {

public function escreveNome( $str ) {


// Escreve um nome qualquer
echo( $str );


// Retorna a referencia do próprio objeto
return $this;

}

public function escreveSobreNome( $str ) {


// Escreve um sobrenome qualquer
echo( $str );


// Retorna referencia ao próprio objeto
return $this;
}

}

Ao ler a classe de exemplo materia? acima, você notará que eu sempre retorno o próprio objeto. Pois bem imaginemos uma possivel utilização NORMAL da classe acima:

$escreveNomeCompleto = new escreveONomeCompletoUsandoInterfaceFluente();
$escreveNomeCompleto->escreveNome( ‘ Pedro ‘ );
$escreveNomeCompleto->escreveSobreNome( ‘ Mendes ‘ );

Porém, como eu estou retornando o próprio objeto nos métodos da wholesale nba jerseys classe criada, a implementação Fluente do código seria a seguinte:

$escreveNomeCompleto = new escreveONomeCompletoUsandoInterfaceFluente();
$escreveNomeCompleto->escreveNome( ‘ Pedro ‘ )->escreveSobreNome( ‘ Mendes ‘ );

Desta forma, esta criada uma implementação simples das Fluents Interfaces no I PHP. Como você pode perceber, a idéia central é você encadear a chamada dos seus métodos da seguinte forma: $objeto->metodo1()->metodo2()->metodo3()->…->metodofinal(); ao invés de ficar chamando o objeto a cada vez que você queira chamar um método.

Segundo Passo: Aplicando o conceito de Fluents Interfaces para alcançar o conceito de With

Em algumas linguagens você tem o comando With, que funcionada da seguinte forma:

With instanciaDoObjeto

metodoUm();
metodoDois();
metodoTres();

End With;

Com isso, você cheap mlb jerseys fornece a instância do objeto e simplesmente trabalha com seus atributos e/ou métodos dentro do bloco criado, diminuindo o código a ser escrito e deixando-o mais limpo. No PHP eu não achei nada que criasse o With diretamente, mas com o conceito de Interfaces Fluentes, o mesmo código acima poderia ficar da seguinte forma:

$instanciaDoObjeto
->metodoUm();
->metodoDois();
->metodoTres();

Pronto! Esta criado o conceito do With com uma ???? estrutura mais aprimorada. Espero que tenham gostado e enviem Parte suas duvidas/criticas/sujestões.

Um abraço,
Pedro Mendes


I'm Pedro Mendes, a passionate developer and technology enthusiast. This blog covers programming and technology in the broadest sense possible. It's the place I collect my thoughts, work and findings to share with the public.

View Comments