Básico
As variáveis no PHP são representadas por um cifrão ($) seguido pelo
nome da variável. Os nomes de variável são case-sensitive (ou seja, há distinção entre maiúsculas e minúsculas).
Nomes de variável seguem as mesmas regras como outros rótulos no PHP.
Um nome de variável válido inicia-se com uma letra ou sublinhado, seguido
de qualquer número de letras, números ou sublinhados. Em uma
expressão regular, poderia ser representado assim:
^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
Nota:
Para nosso propósito, as letras a-z, A-Z e os bytes
de 127 a 255 (0x80-0xff
).
Nota:
$this
é uma variável especial que não pode
ser atribuída.
Anteriormente ao PHP 7.1.0, atribuição indireta (usando
variáveis variáveis)
era possível.
Para informação sobre funções relacionadas a variáveis, veja a
Referência de funções para variáveis.
Por padrão, as variáveis são sempre atribuídas por valor. Isto significa
que ao atribuir uma expressão a uma variável, o valor
da expressão original é copiado integralmente para a variável de destino.
Isto significa também que, após atribuir o valor de uma variável a
outra, a alteração de uma destas variáveis
não afetará a outra. Para maiores informações sobre este tipo de
atribuição, veja o capítulo em Expressões.
O PHP também oferece um outro meio de atribuir valores a variáveis:
atribuição por referência.
Isto significa que a nova variável simplesmente referência (em outras palavras,
"torna-se um apelido para" ou "aponta para") a variável original.
Alterações na nova variável afetam a original, e vice-versa.
Para atribuir por referência, simplesmente adicione um e-comercial (&)
na frente do nome da variável que estiver sendo atribuída (variável
de origem) Por exemplo, o trecho de código abaixo imprime 'My
name is Bob
' duas vezes:
Uma observação importante a se fazer, é que somente variáveis
nomeadas podem ser atribuídas por referência.
Não é necessário inicializar variáveis no PHP, contudo é uma ótima
prática. Variáveis não inicializadas tem um valor padrão de tipo dependendo do contexto no qual são usadas
- padrão de booleanos é false
, de inteiros e ponto-flutuantes é zero, strings (por exemplo, se utilizados em echo), são
definidas como vazias e arrays tornam-se um array vazio.
Exemplo #1 Valores padrões de variáveis não inicializadas
<?php
// Limpa e remove referência (sem uso de contexto) a variável; imprime NULL
var_dump($unset_var);
// Uso de booleano; imprime 'false' (Veja sobre operadores ternário para saber mais sobre a sintaxe)
echo $unset_bool ? "true\n" : "false\n";
// Uso de string; imprime 'string(3) "abc"'
$unset_str .= 'abc';
var_dump($unset_str);
// Uso de inteiro; imprime 'int(25)'
$unset_int += 25; // 0 + 25 => 25
var_dump($unset_int);
// Uso de float; imprime 'float(1.25)'
$unset_float += 1.25;
var_dump($unset_float);
// Uso de array; imprime array(1) { [3]=> string(3) "def" }
$unset_arr[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
var_dump($unset_arr);
// Uso de objeto; cria novo objeto stdClass (veja http://www.php.net/manual/en/reserved.classes.php)
// Imprime: object(stdClass)#1 (1) { ["foo"]=> string(3) "bar" }
$unset_obj->foo = 'bar';
var_dump($unset_obj);
?>
Confiar no valor padrão de uma variável não inicializada é problemático
no caso de incluir um arquivo em outro que usa uma variável de mesmo
nome.
Erros de nível E_WARNING
(e anteriormente ao PHP 8.0.0, E_NOTICE
)
serão emitidos no caso de
variáveis não inicializadas, contudo não no caso de adicionar
elementos a um array não inicializado. A instrução da linguagem isset()
pode ser usado para detectar se uma variável não foi inicializada.