-1

Qual a diferença entre $this->variavel e $this->$variavel?

criado por Valmirez em 14/11/2003 11:41pm
Qual a diferença entre $this->variavel e $this->$variavel?
E quando usar o que?

Lista de Respostas:

0
17/11/2003 3:47pm
(~20 anos atrás)
Victor Henrique respondeu:
Sinceramente, nunca usei $this->$variavel, mas acredito que seja o mesmo efeito, pois variáveis da classe sempre que chamadas como $this->variavel funcionam perfeitamente, a outra forma deve ser correta também pois existem exemplos no Manual utilizando esta forma, mas lá não há explicação sobre o assunto.

0
17/11/2003 4:19pm
(~20 anos atrás)
ERRADO!

no manual há informação suficientes sobre OOP

até onde eu sei

$this->metodo()

o que está após o -> chama-se método

e uma maneira bastante simples de entender o que é um método seria dizer que métodos são funções agrupadas dentro de uma classe

logo,

class phpbrasil {

function add_page($name) {
$this->add = $name;
}
}

voce usaria

$ob = new phpbrasil();
e ai sim
$ob->add_page("principal");

sobre o $this->$variable
talvez e TALVEZ sirva para acessar uma variavel da classe mas nunca fiz testes usando isso.

sobre a documentação caso você queira ler
www.php.net/oop

espero ter ajudado

0
17/11/2003 5:02pm
(~20 anos atrás)
Diogo Gomes respondeu:
A utilização está errada, mas não completamente, ótima a explicação do Marcelo, mas na mesma página citada por ele podemos ver como usar um array para nomear o $this->{valor do array}. Vejamos o exemplo:
É incorreto usar:
$dynamic_names=array("name_one","name_two");

$this->$dynamic_names[0]="apples";
// Esperado $this->name_one="apples";

$this->$dynamic_names[1]="oranges";
// Esperado $this->name_two="oranges";

O certo seria:
$dynamic_names=array("name_one","name_two");

$this->{$dynamic_names[0]}="apples";
// Esperado $this->name_one="apples";

$this->{$dynamic_names[1]}="oranges";
// Esperado $this->name_two="oranges";

0
17/11/2003 5:05pm
(~20 anos atrás)
Diogo Gomes respondeu:
Sobre o que eu falei anteriormente, vai um código de exemplo:

class variaveldinamica {
function dinamico(){
$dynamic_names=array("name_one","name_two");

$this->{$dynamic_names[0]}="apples";
// Esperado $this->name_one="apples";

$this->{$dynamic_names[1]}="oranges";
// Esperado $this->name_two="oranges";
return $this->name_one."p2p".$this->name_two;
}
}
$teste=new variaveldinamica;
echo $teste->dinamico();

0
17/11/2003 9:00pm
(~20 anos atrás)
Silvano Girardi Jr. respondeu:
$this->$variavel funciona como o esquema de 'variável de variável'

[z]

0
18/11/2003 5:01pm
(~20 anos atrás)
Diogo Gomes respondeu:
Baseado no manual:
Note que a variável deve ser chamada $carrinho->items, não $this->$variavel , mesmo porque, um nome de variável em PHP tem apenas um único sinal de cifrão.

0
27/09/2004 1:15pm
(~19 anos atrás)
André Luiz Bergamo respondeu:
É simples, a diferença é que $this->variavel acessa uma determinada variável dentro de uma mesma classe, independente ou não de qual método o acessamos. Agora $this->$variável é uma interpretação incorreta e NÃO existe.

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)