Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gabriel Jacinto

Pra que serve o 'return $this'

Recommended Posts

Retorna o próprio objeto(instância), imagine a cena:

 

class Teste {
  private $propriedade1;
  private $propriedade2;

  function setPropriedade1($val) {
     $this->propriedade1 = $val;
     return $this;
  }

  function setPropriedade2($val) {
     $this->propriedade2 = $val;
     return $this;
  }

  function mostrar() {
     return $this->propriedade1 . ' ' . $this->propriedade2;
  }
}

$teste = new Teste();
echo $teste->setPropriedade1('Ola')->setPropriedade2('Mundo')->mostrar();

 

Vai exibir Ola Mundo

 

 

 

Chama-se Fluent Interface

http://en.wikipedia.org/wiki/Fluent_interface

 

Ou Interface Fluente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em uma explicação bem simplória, quer dizer, desta classe, ex:

 

class carro{

private $cor

public function pintar(){

$this -> cor = "verde" // quer dizer desta classe, ou seja, toda vez que você quiser atribuir , ou mesmo envocar um metodo ou atributo dentro da classe, usa-se $this

}

}

 

espero ter ajudado :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

É para você retornar algo dentro da classe em que está , é uma maneira para agilizar as coisas e o PHP não se confunda. Acho que os exemplos já foram dados ai em cima !

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

A explicação é valida, mas precisam evitar confusões. Está errado dizer que é para retornar algo dentro da classe. Apesar de ser algo que está "dentro" da classe escrita, não é do nível de uma classe e sim no nível de um objeto. Se não existir instância (objeto), $this não funcionará.

 

Tentem utilizar $this para métodos/atributos estáticos. Não irá funcionar, pois um método/atributo estático não é do escopo de um objeto e sim de uma classe.

 

Para um teste rápido, verão que somente o teste 3 funcionará, pois self é referente a classe e não ao objeto:

class Teste {
public static function primeiroTeste() {
	return $this;
}


public static function segundoTeste() {
	return new $this;
}


public static function terceiroTeste() {
	return new self;
}
}

var_dump(Teste::primeiroTeste());

var_dump(Teste::segundoTeste());

var_dump(Teste::terceiroTeste());

 

Para mais informações sobre o que é $this, vejam o segundo exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.