Variável de variável, quando utilizar?

Bom pessoal, já tenho um bom conhecimento em Java, por isso decidi começar aprender PHP, e no meio dos estudos me deparei com uma funcionalidade da linguagem: criar uma variável utilizando o conteúdo de outra variável, variável de variável.

$a = "variavel";
$$a = "variavel de variavel";

Minha dúvida seria, quando, na vida real, eu utilizaria essa funcionalidade, pois nos meus estudos não consegui encontrar uma aplicação real para essa função?

Agradeço.

E ai , beleza ?
Algumas linguagens como PHP/JavaScript são de tipagem fraca ,isso permite que você não precise declarar o tipo da variável (float/double/int) a vantagem disso é que você consegue ter mais facilidade na hora de programar e também o desenvolvimento pode ser mais rápido do programa. a desvantagem é que pode tornar a detecção de erro mais difícil.

Outras linguagens como Java/Pascal são de tipagem forte ou seja você precisa declarar o tipo da variável a vantagem disso é que é boa para iniciantes já que eles não tem muito conhecimento de programação , a desvantagem é que prende programadores mais veteranos.

Essas são as vantagens que eu vejo entre os dois tipos. Se quiser saber mais sobre o assunto eu recomendo que leia o link a baixo.

1 curtida

Este é o ponto.
Java possui uma palavra reservada chamada goto. Quando você vai usar goto, no java?
É um recurso da linguagem, é algo que existe, mas, você não precisa utilizar.
P.S.: Eu conheço de programação PHP desde 2007 e nunca tinha visto tal estrutura.

1 curtida

Não é muito comum hoje em dia devido o php possuir recursos de reflexão, mas antigamente era uma forma de “simular” esse recurso, alguns frameworks usam para FrontController por exemplo…

Digamos que você tenha um formulário e pretende mandar os dados do html para o php pegar, você cria um MVC rústico chamando o controle e indicando o método a ser executado…

<form mehotd="post" action="Controle.php?act=saveCad">

No php você o chamaria dessa forma…

// Controle.php
class Controle {
    public function saveCad() {...}
}

$metodo = $_POST['act'];

$controle = new Controle();
$controle->$metodo(); // $controle->saveCad();...

Algo nesse sentido, e o termo técnico no php para isso são variáveis variantes, pesquise mais a respeito, inclusive cai na certificação…

Tendo o exemplo acima mostrado, você pode imaginar um controlador central chamando os métodos ou outros controles e assim criar uma estrutura dinâmica “básica” já que a API de Reflection é robusta o suficiente para esse fim hoje em dia… bons estudos!

2 curtidas

Valeu pessoal, conseguiram tirar minhas dúvidas e um pouco além :grin:

Acho que peguei pesado já te mostrando orientação a objetos diretamente e pulando etapas, outro exemplo bem básico…

$nivel1 = 'valor';
$nivel2 = 'nivel1';
$nivel3 = 'nivel2';

echo $nivel3; // imprime nivel2...
echo $$nivel3; // esta no nivel2 e imprime nivel1...
echo $$$nivel3; // esta no nivel1 e imprime valor...
echo $$$$nivel3; // erro pois não existe um nivel0 por exemplo...

Basicamente o que o php faz são apontamentos assim como em linguagem C, a diferença é que ao invés de usar um endereço de memória, usamos os nomes das variáveis…

1 curtida