Curso de PHP: #4 - Variáveis

Curso de PHP: #4 - Variáveis

E ai escoteiro, tudo bem!? No post anterior a gente conversou um pouco sobre tipos de dados. Vimos como eles são importantes no nosso dia-a-dia e vimos muito superficialmente como eles podem ser impressos no PHP, mas até agora não fizemos nada realmente interessante. Isso muda aqui.

Sempre que você acessa algo em seu computador, seja um documento PDF, uma música no Sporfy, um vídeo no Youtube, etc. Milhões ou até bilhões de dados são processados e tudo isso fica armazenado temporariamente na memória RAM do seu computador, porém, Como uma linguagem de programação saberia em que lugar da memória RAM aquele dado foi posicionado? É ai que entra o conceito de Variáveis. Variáveis são "apelidos" que damos para pequenos espaços de memória onde podemos armazenas alguma informação. Uma vez que essa informação está armazenada na memória, podemos acessar essa informação de outra parte do nosso programa, tornando-o muito mais esperto.

Vamos a um pequeno exemplo:

<?php
$nome = "Acampamento Dev";
echo $nome;

Algumas coisas novas que ainda não aprendemos foram usadas nesse código. Vamos analisar parte a parte.

$nome Tem um símbolo de cifrão na frente da palavra "nome". Isso está certo ou foi um erro de digitação?

Não, não tem nada errado. Isso é uma variável no PHP. Toda variável no PHP precisa obrigatoriamente ter seu nome iniciado pelo caractere $ e seguido de uma letra. Se você tentar criar uma variável chamada $1nome o PHP vai acusar um erro.

No código acima, ao encontrar a variável $nome o PHP já sabe que se trata de uma variável, logo, ele ira acessar uma determinada posição de memória (que ele já saberá qual) para armazenar ou ler uma determinada informação.

Ok! Mas como será que o PHP sabe se eu quero salvar algo na memória ou ler algo que já está lá?

Bem, o PHP analisa a linha como um todo. Perceba que logo após a variável $nome há um símbolo de igualdade, esse símbolo de igualdade é chamado de operador de atribuição e como o próprio nome diz, ele serve para atribuir (definir) um valor a alguma coisa, nesse caso à variável $nome.

Ai vem a dúvida: Mas, que valor ele vai atribuir?

Resposta: Tudo que tiver a direita desse operador de atribuição, que nesse caso é a String "Acampamento Dev".

Como nesse exemplo o interpretador PHP irá ler o código linha a linha, assim que ele passar pela linha abaixo ele vai salvar a String na memória e associar à variável $nome.

// ... restante do código
$nome = "Acampamento Dev";

Quando o interpretador PHP chegar na linha abaixo, ele já vai ter na memória a variável $nome com o valor "Acampamento Dev". Então ao executar o echo o que será impresso na tela não a palavra $nome, mas sim o valor que está alocado na memória e associado à variável $nome que é a String "Acampamento Dev".

// ... restante do código
echo $nome;

Mas, será que é possível salvar na memória por meio de variáveis apenas Strings? A resposta é Não, é possível salvar em variáveis todo e qualquer tipo de dados suportado pelo PHP.

Vamos a alguns exemplos:

<?php

$nome = "João da Silva";
$idade = 13;
$mesada =  120.00;
$faraFaculdade = true;

echo $nome;

No exemplo acima, criamos 4 variáveis chamadas: $nome que recebe como valor uma String, $idade que recebe como valor um número inteiro, $mesada que recebe como valor um float e $faraFaculdade que recebe como valor um Booleano.

Perceba que não é porque eu criei várias variáveis, que eu preciso imprimir todas. Nesse caso eu imprimir apenas o valor da variável $nome.

Importante: Se você já brincou com outras linguagens de programação como C, C++, Java, etc. Você deve estar se perguntando: "Mas como o PHP sabe que tipo de dado está sendo informado, se na declaração da variável a gente não informou o tipo?

PHP é uma Linguagem Dinâmica e que faz Inferência de Tipos, ou seja, quando você atribui um valor a uma variável, o PHP lê o valor, identifica de que tipo é esse valor e já atribui esse TIPO à variável. Não é legal? É claro que isso tem um custo computacional, mas falaremos mais sobre isso num outro momento.

Concatenação de Strings

Concatenar é um termo muito usado em programação que pode ser traduzido como: "ligar" ou "juntar" coisas.

Veja o seguinte diálogo:

  • Pessoa 1: Olá, qual é o seu nome?
  • Pessoa 2: Fabrício
  • Pessoa 1: E qual é o seu sobrenome?
  • Pessoa 2: Silva
  • Pessoa 1: Legal, seu nome completo é: Fabrício Silva

Perceba que o que a Pessoa 1 um fez foi concatenar o Nome da Pessoa 2 com o Sobrenome também da Pessoa 2.

Mas... Como ficaria isso em formato de código PHP?

<?php

$nome = "Fabrício";
$sobrenome = "Silva";
$nomeCompleto = $nome . $sobrenome;

echo $nomeCompleto;

O PHP usa o caractere ponto "." pra concatenar strings. Porém, se você executou o código acima, você deve ter percebido que o que foi impresso no console foi:

FabrícioSilva

Ué! Por que será que não ficou um espaço entre as palavras?

Simples, porque não mandamos o PHP por um espaço, ora bolas!!! Mas como poderíamos resolver esse problema?

Podemos resolver de várias formas diferentes:

Opção 1:

<?php

// Colocando um espaço em branco no final da string $nome
$nome = "Fabrício ";
$sobrenome = "Silva";
$nomeCompleto = $nome . $sobrenome;

echo $nomeCompleto;

Opção 2:

<?php

$nome = "Fabrício";
// Colocando um espaço em branco no começo da string $sobrenome
$sobrenome = " Silva";
$nomeCompleto = $nome . $sobrenome;

echo $nomeCompleto;

Opção 3:

<?php

$nome = "Fabrício";
$sobrenome = "Silva";
// Concatenamento um espaço em branco
$nomeCompleto = $nome . " " . $sobrenome;

echo $nomeCompleto;

Qualquer uma das 3 opções acima resultará na mesma resposta no console, porém comumente utilizamos a opção 3 por ser mais legível.

O PHP também suporta strings com aspas simples

<?php

$string1 = "Eu tenho aspas duplas";
$string2 = 'Eu tenho aspas simples';

echo $string1;
echo "\n";
echo $string2;

Porém elas tem uma pequena diferença... Quando trabalhamos com aspas duplas, o PHP suporta concatenação direta com variáveis dentro da string. Veja um exemplo:

<?php

$nome = "Fabrício";
$sobrenome = "Silva";
$nomeCompleto = "Nome completo: $nome $sobrenome";

echo $nomeCompleto;

A saída do código acima será: Nome completo: Fabrício Silva

Porém, se mudarmos para aspas simples, o PHP entenderá que você quer de fato imprimir um texto com cifrão na frente. Veja esse outro exemplo:

<?php

$nome = "Fabrício";
$sobrenome = "Silva";
$nomeCompleto = 'Nome completo: $nome $sobrenome';

echo $nomeCompleto;

A saída do código acima será: Nome completo: $nome $sobrenome

Então, muito cuidado quando usar aspas simples e duplas 😬.

Padrão de Nomenclatura

Basicamente existem 3 formas mais comuns de se nomear variáveis, são elas:

Snake Case:

Todas as palavras são escritas em letras minúsculas e separadas por sinal de underscore "_".

$nome_da_minha_variavel = 10;

Camel Case:

A primeira palavra inicia com letra minúscula e todas as outras palavras são Iniciadas com letra maiúscula, não tendo espaço entre as palavras.

$nomeDaMinhaVariavel = 10;

Pascal Case:

Praticamente idêntica ao padrão Camel Case porém todas as palavras, incluindo a primeira, iniciam com letra maiúscula.

$NomeDaMinhaVariavel = 10;

Para nomes de variáveis o PHP FIG sugere utilizar o padrão Camel Case e será esse que utilizaremos nesse curso.

É importante frisar que nomes de variáveis no PHP não pode iniciar com caracteres especiais e números imediatamente após o cifrão, exemplo: $1nome, $ nome, $#nome, etc...

Desafio

Será que é possível concatenar uma String com um número inteiro? E com um número decimal? Será que é possível criar umas nova variável chamada $nomeCompleto e atribuir a ela o resultado da concatenação de $nome e $sobrenome? Teste ai e me conta se deu certo 😊

Para saber mais sobre variáveis, sugiro a leitura da documentação do PHP, é bem simples de entender