Créditos: www.devmedia.com.br
PHP é uma linguagem de programação bem versátil e muito familiar a linguagem HTML. O código PHP está escrito entre as tags <?php?>, como é mostrado na Listagem 1.
Listagem 1. Exemplo de uso do PHP(index.php).
<!DOCTYPE html> <html> <body> <h1>Estamos aprendendo PHP!</h1> <?php echo "Vamos prosseguir aprendendo PHP" ; ?> </body> </html> |
O arquivo index foi salvo com a extensão .php para mostrarmos ao nosso interpretador que há um código PHP a ser interpretado. Além disso, no exemplo usamos a função echo para escrever na tela uma mensagem.
Para comentarmos o nosso código PHP usamos duas barras ou # para comentários de uma linha, e para comentários de múltiplas linhas usamos /* */, o mesmo usado em CSS. Observe alguns exemplos na Listagem 2.
Listagem 2. Exemplo de comentários no PHP utilizando //, # ou /**/
<?php echo "Oi, Eu serei visto na sua tela" ; // Eu não! Sou apenas um comentário. echo "Oi, Eu também serei visto por você" ; # Já eu não serei! echo "E eu aqui novamente na sua tela, rs" ; /* Eu não aparecerei na sua tela novamente pois sou um comentário */ ?> |
O valor de uma constante jamais poderá ser alterado enquanto estiver sendo executada e para defini-la utilizamos a função define(), como mostra a Listagem 3.
Listagem 3. Exemplo de Constantes.
<?php define( "PHP" , "Linguagem Open - Source" ); echo PHP; // Linguagem Open - Source ?> |
Utilizando a função define() definimos que a constante com o nome de PHP, terá como valor: Linguagem Open – Source.
Para criarmos uma variável basta utilizar o sinal de cifrão. Uma variável pode armazenar textos e números. Além disso, a linguagem PHP é case sensitive, então A é diferente de a. Observe um exemplo de uso de variáveis na Listagem 4.
Listagem 4. Exemplo de Variáveis.
<?php $name = "Guilherme" ; $age = 20; echo $name ; // Guilherme echo "</br>" ; echo $age ; // 20 ?> |
No exemplo criamos uma variável ($name) e declaramos a ela uma string, sendo assim precisamos colocá-la entre aspas. Já a outra variável ($age) é declarada como inteiro, então não é necessário o uso de aspas. Ao usarmos echo nas variáveis, o resultado impresso é o conteúdo dessa variável.
Para a nomeação de variáveis, as dicas a seguir são necessárias:
Falaremos agora sobre alguns dos tipos de variáveis que existem no PHP:
Listagem 5. Exemplos de String.
<?php $a = "mundo!" ; echo "Olá, $a" ; // Olá, mundo! echo 'Olá, $a' ; // Olá, $a ?> |
Note que quando declaramos no echo "Olá, $a, o PHP interpretou o conteúdo da $a, pois está entre aspas duplas. E quando usamos a mesma forma, só que entre aspas simples (echo 'Olá, $a'), não temos o mesmo resultado. Então quando queremos que o PHP interprete o valor de nossa variável dentro de uma string é necessário o uso de aspas duplas. Fique atento!
Além disso, podemos usar um ponto para concatenar strings, assim como o sinal + para o JavaScript, como mostra o código a seguir:
<?php echo "Olá," . " mundo!" ; //Olá, mundo! ?> |
Um array que mantém uma série de elementos que podem ter diferentes tipos, como mostra a Listagem 6.
Listagem 6. Exemplo de arrays.
<?php $php = array ( "Zend" => "CERTIFICAÇÃO" , 6 => false); echo $php [ "Zend" ]; // CERTIFICAÇÃO echo $php [6]; // 0 // Zend é nossa chave e CERTIFICAÇÃO nosso valor // 6 é nossa chave e false(0) é nosso valor ?> |
Note que nossa primeira chave se chama Zend, e a outra chama-se 6, mas quanto a nomeação de chaves de array pode ser tanto string ou um integer. Para o valor pode ser qualquer coisa.
Os tipos de variáveis no PHP são dinâmicos. Para forçarmos os tipos de nossas variáveis utilizamos uma técnica conhecida como type casting, ou simplesmente troca de tipos. Veja na Listagem 7 alguns exemplos.
Listagem 7. Exemplo de conversão de tipos.
<?php $var = 100; $type_casting = (bool) $var ; // torna – se booleano $type_casting = (int) $var ; // torna – se inteiro $type_casting = (float) $var ; // torna – se float $type_casting = (string) $var ; // torna – se string $type_casting = ( array ) $var ; // torna – se array echo $type_casting = (bool) $var ; // 1 ?> |
Veja que transformamos o valor da $var, que antes era um inteiro, para um valor booleano
Vamos conhecer agora operadores, que permitem que nós manipulemos o conteúdo de uma ou mais variáveis.
Podemos utilizar operadores matemáticos para efetuar cálculos com os valores de variáveis, como mostra a Listagem 8.
Listagem 8. Exemplo de operadores aritméticos.
<?php $a = 3; $b = 3; $c = $a * $b ; // resultado é 9 $d = $a + $b ; // resultado é 6 $e = $c - $d ; // resultado é 3 ?> |
Criamos as variáveis $a e $b e a partir delas conseguimos fazer vários cálculos matemáticos.
Os operadores matemáticos disponíveis em PHP são:
Lembrando que não precisamos especificar os tipos de variáveis no PHP, como nos exemplos a seguir:
<?php $a = "5" ; // string echo $a + 2; // 7, integer echo $a + '5 carros' ; // 10, integer ?> |
Note que $a é uma string e quando demos um echo nela somando com 2, que é um inteiro, o resultado retornado foi 7. Isso demonstra que nossos tipos de variáveis em PHP são sempre dinâmicos.
Utilizamos os operadores de atribuição para definir variáveis e seus valores, além de usá-los juntamente com os operadores matemáticos, como mostra o exemplo da Listagem 9.
Listagem 9. Exemplo de Operadores de Atribuição com Operadores Matemáticos.
<?php $a = 1; // A variável $a é igual a 1 $a += 2; // Somamos 2 ao valor da $a; echo $a ; ?> |
O resultado acima é 3, pois somamos 2 ao valor da $a, que é 1. A seguir temos mais exemplos:
<?php $a -= 2; // Subtraímos 2 ao valor da variável $a; $a *= 2; // Multiplicamos o valor da variável $a por 2; $a /= 2; // Dividimos o valor da variável $a por 2. ?> |
A sintaxe desses operadores é a mesma do exemplo da soma, pois basta dar um echo depois de ter declarado a variável com seu respectivo operador.
Podemos também incrementar ou decrementar variáveis utilizando os operadores de incrementação, herdados da linguagem C, como nos exemplos a seguir:
<?php $a = 1; echo ++ $a ; // Incrementamos 1 e retornamos o valor echo $a ++; // Retornamos o valor e incrementamos 1 echo -- $a ; // Decrementamos 1 e retornamos o valor echo $a --; // Retornamos o valor e decrementamos 1 ?> |
Esses são usados para comparar valores ou expressões, retornando um valor booleano (true ou false):
É importante lembrar que == não checa o tipo da variável, apenas seu valor. Já o === checa tanto o valor da variável quanto o seu tipo.
Existem também os operadores lógicos para a criação de testes condicionais:
A condição é avaliada para que, caso algo seja verdadeiro, faça isto, senão, faça aquilo, como mostra a Listagem 10.
Listagem 10. Uso de if/else.
<?php $idade = 17; if ( $idade < 18) { echo 'Você não pode entrar aqui!' ; } else { echo 'Seja bem – vindo' ; } ?> |
Criamos a variável $idade que guarda um inteiro. Em seguida utilizamos IF para verificar se $idade é menor que 18, e caso seja será impresso: Você não pode entra aqui! Depois criamos um ELSE, que é o contrário da primeira condição.
Podemos também utilizar os operadores lógicos junto dos operadores relacionais, como mostra a Listagem 11.
Listagem 11. Exemplo do uso de Operadores lógicos com Operadores relacionais.
<?php $idade = 21; $identidade = true; if ( $idade > 18 && $identidade == true) { echo 'Seja bem-vindo!' ; } ?> |
Podemos utilizar a estrutura ELSEIF quando criamos uma outra condição, além da principal, como mostra o exemplo da Listagem 12.
Listagem 12. Exemplo ELSEIF.
<?php $nome = 'Till Lindemann' ; if ( $nome == 'Richard Kruspe' ) { echo 'E ae Richard Kruspe!' ; } elseif ( $nome == 'Oliver Riedel' ) { echo 'E ae Oliver Riedel!' ; } elseif ( $nome == 'Till Lindemann' ) { echo 'E ae Till Lindemann!' ; } else { echo "E ae $nome!" ; } ?> |
Declaramos para $nome uma string e depois fizemos várias condições, onde caso não caia em nenhum elseif, será retornado o valor que estiver dentro da $nome.
O ELSEIF pode ser muito útil, mas o mesmo é aconselhável usar apenas quando temos poucas condições. Caso contrário, para não manter um código cheio de ELSEIF's, o mais indicado é usar o SWITCH, que permite criarmos infinitas condições de forma organizada. Veja na Listagem 13.
Listagem 13. Exemplo SWITCH.
<?php $nome = 'Fulano' ; switch ( $nome ) { case 'Fulano' : echo 'E ai Fulano!' ; break ; case 'Sicrano' : echo 'E ai Sicrano!' ; break ; case 'Beltrano' : echo 'E ai Beltrano!' ; break ; default : echo 'Qual é o seu nome?' ; break ; } // Resultado é: E ai Fulano! ?> |
No exemplo foi criada $nome declarando a ela uma string. É verificado a variável passada em switch entre parênteses: caso o valor contido na variável seja o que estiver em "case", será impresso o que conter no echo já pré-definido, e o break para a verificação. Caso não seja na primeira condição, será verificado todas as demais condições até chegar na última, que perguntará o seu nome. Na sintaxe básica do Switch atente-se sempre ao “:” no case e os “;” depois do echo e break.
No PHP existe uma forma mais curta de criar condições através do Operador Ternário, como mostra a Listagem 14.
Listagem 14. Utilizando Operador Ternário.
<?php $number1 = 1; $number2 = 2; if ( $number2 > $number1 ) { $a = 'Número 2 é maior que número 1' ; } else { $b = 'Número 2 não é maior que número 1' ; } $ternario = ( $number2 > $number1 ) ? 'Número 2 é maior que número 1' : 'Número 2 não é maior que número 1' ; echo $ternario ; // Número 2 é maior que número 1 ?> |
Criamos duas variáveis e a partir delas fizemos verificação com if/else e da forma ternária também. Na $ternario passamos a condição que tem o mesmo valor que o if entre parênteses e o ponto de interrogação faz a pergunta: $number2 é maior $number1?
Caso seja, será impresso o que vier depois desse ponto. Caso $number2 não seja maior que $number1, será impresso o que estiver depois dos “:” que tem o mesmo valor que else. Sendo assim, podemos comparar qual forma é mais simples com esses dois exemplos.
Quando criamos um array, por padrão, ele recebe chaves numéricas incrementadas automaticamente de acordo com novos valores. Contudo, podemos criar chaves que são strings, daí chamamos de array associativo. Para explicar melhor, faremos um exemplo em que mostraremos a temperatura média de alguns meses do ano, como mostra a Listagem 15.
Listagem 15. Arrays Associativos.
<?php $estacao = array ( 'Verao' => 'de 21 de dezembro a 21 de março' , 'Outono' => 'de 21 de março a 21 de junho' , 'Inverno' => 'de 21 de junho a 23 de setembro' , 'Primavera' => 'de 23 de setembro a 21 de dezembro' ); ?> |
Observem que nossos valores agora possuem nomes. Podemos utilizar estes nomes para nos referenciarmos a um valor especifico dentro de um array. Veja como fica na prática o exemplo:
<?php $estacao = array ( 'Verao' => 'de 21 de dezembro a 21 de março' , 'Outono' => 'de 21 de março a 21 de junho' , 'Inverno' => 'de 21 de junho a 23 de setembro' , 'Primavera' => 'de 23 de setembro a 21 de dezembro' ); echo "A estação Verão foi: {$estacao['Verao']}" ; // A estação Verão foi: de 21 de dezembro a 21 de março ?> |
Como sabemos, a sintaxe de um array é chave => valor. Note que demos um echo assim: {$estacao['Verao']}, onde $estacao contém um array que tem uma chave chamada Verao e contém o valor: de 21 de dezembro a 21 de março. Sendo assim, será impresso o valor da chave especificada.
Existem maneiras diferentes de utilizar variáveis dentro de strings e vice-versa, concatenadas ou não concatenadas, como mostra a Listagem 16.
Listagem 16. Variáveis dentro de strings.
<?php $ensino = 'EAD' ; $formacao = array ( 'PHP' => 'Desenvolvedor PHP' , 'Infra' => 'SysAdmin Linux' ); // Não concatenadas echo "<p>No $ensino da DevMedia você se torna {$formacao['PHP']}" ; echo " e pode se tornar também {$formacao['Infra']}.</p>" ; // Concatenadas echo '<p>No ' . $ensino . ' da DevMedia você se torna ' . $formacao [ 'PHP' ]; echo ' e pode se tornar também ' . $formacao [ 'Infra' ] . '.</p>' ; ?> |
No exemplo o resultado será o mesmo, apenas mostramos a utilização de uma variável e um array com concatenação ou não concatenado para mostrar seus valores. Tente usar sempre a forma não concatenada: você pode notar que nosso código ficou bem mais limpo.
Arrays multidimensionais são, basicamente, array dentro de um array, como mostra a Listagem 17.
Listagem 17. Arrays Multidimensionais.
<?php $temp = array ( '2010' => array ( 'Outubro' => 25, 'Novembro' => 23, 'Dezembro' => 20), '2011' => array ( 'Outubro' => 26, 'Novembro' => 22, 'Dezembro' => 21), '2012' => array ( 'Outubro' => 27, 'Novembro' => 28, 'Dezembro' => 19) ); echo "Dezembro de 2012 foi de: {$temp['2012']['Dezembro']} graus" ; // Dezembro de 2012 foi de: 19 graus ?> |
Veja que criamos a $temp que guarda um array. Em nosso exemplo, o array com o nome de 2010 guarda os valores Outubro, Novembro e Dezembro em um outro array, que por sua vez, guarda outros valores, que são a temperatura. Veja que demos um echo em {$temp['2012']['Dezembro']} onde $temp guarda um array 2012 e inicia um outro array que contém a chave dezembro e que tem o valor que queremos.
Podemos criar arrays de uma forma simples e rápida utilizando o operador [ ], como mostra a Listagem 18.
Listagem 18. Criando Arrays de forma alternativa.
<?php $number1 = array (100, 101, 102); $number1 [] = 103; $number2 [] = 104; print_r( $number1 ); echo '<hr/>' ; print_r( $number2 ); ?> |
Através dos colchetes conseguimos acrescentar dados a um array. No caso da $number1 temos um array com os valores 100, 101, 102. Quando declaramos $number1[] = 103; estamos dizendo que queremos acrescentar no array $number1 o valor 103.
Podemos também alterar os valores de um array usando colchetes, como no código a seguir:
<?php $cert = array ( 'EAD' => 'Você terá um certificado ' , 'PHP' => 'Linux' ); $cert [ 'PHP' ] = 'Zend' ; print_r( $cert ); ?> |
Temos a $cert que contém um array com chave => valor. Quando dizemos $cert['PHP'] = 'Zend', estamos dizendo para o PHP que queremos alterar o valor da chave PHP para Zend.
Os loops no PHP são estruturas de controle muitos importantes que permitem efetuar um laço de repetição enquanto uma determinada condição for verdadeira.
Existem quatro tipos de loop no PHP são eles: while, do while, for e foreach.
O while permite que executemos um bloco de código enquanto a expressão passada como parâmetro for verdadeira, como mostra a Listagem 19.
Listagem 19. Exemplo while.
<?php $num = 0; while ( $num < 10 ) { echo $num ++; } // 0123456789 ?> |
Declaramos a $num o valor 0. Nossa expressão no while então incrementa a essa variável enquanto $num for menor que 10.
O do while tem a mesma ideia que o while: a diferença é que ele avalia a expressão depois de executar algo. Com isso, será garantido que o código será executado mesmo que a expressão seja falsa, como mostra o exemplo da Listagem 20.
Listagem 20. Exemplo Do while.
<?php $cont = 2000; do { $dobro = $cont + $cont ; echo "O dobro de $cont é $dobro" ; $cont ++; } while ( $cont <= 1999); ?> |
A sintaxe básica do DO WHILE é primeiro executar o que colocamos entre as chaves do DO.
O for é igual ao while e ao do while, permitindo que executemos três operações em sua condição, separadas por ponto e vírgula.
A primeira é executada ao início do loop, a segunda é a condição (enquanto ela for verdadeira, o loop continuará), e a terceira é executada ao fim de cada repetição, como mostra o exemplo da Listagem 21.
Listagem 21. Exemplo For.
<?php for ( $a = 1; $a <= 10; $a ++){ $cubo = $a * $a * $a ; echo "O cubo de $a é $cubo<br />" ; } ?> |
Entre parênteses temos $a que guarda 1. Depois verificamos se $a for menor ou igual a 10 e, por último, incrementamos $a. Dentro das chaves do FOR criamos uma variável que traz o cubo de $a para nós e quando demos um echo será mostrado o cubo dos números de 1 a 10.
O Foreach faz o mesmo que as demais estruturas já apresentadas, porém, com ela podemos trabalhar com arrays, como mostra o exemplo da Listagem 22.
Listagem 22. Usando FOREACH.
<?php $ead = array ( 'Aqui na DevMedia ' , 'você se torna um ' , 'desenvolvedor PHP' ); foreach ( $ead as $can ){ echo "$can" ; } //Aqui na DevMedia você se torna um desenvolvedor PHP ?> |
No exemplo é criado um array e depois usamos o foreach para ir nesse array e repetir tudo o que conter nele. A sintaxe do foreach é mostrada entre parênteses onde colocamos o nome de nossa variável, e com o termo as alteramos o nome dela para $can. Depois, basta dar um echo que tudo que conter em nosso array será mostrado.
A seguir utilizamos o loop em um array que contém chave =>valor.
<?php $temp = array ( 'Outubro' => 27, 'Novembro' => 28, 'Dezembro' => 19); foreach ( $temp as $chave => $valor ) { echo "A temperatura média de $chave foi de $valor graus<br />" ; } ?> |
Quando formos utilizar o foreach em um array que contém chave e valor é necessário a sintaxe que vemos entre parênteses;
Assim como temos os arrays multidimensionais, assim também temos foreachs multidimensionais, que são foreachs dentro de foreachs, como mostra o exemplo da Listagem 23.
Listagem 23. Uso do foreach com array multidimensional.
<?php $temp = array ( '2010' => array ( 'Outubro' => 25, 'Novembro' => 23, 'Dezembro' => 20), '2011' => array ( 'Outubro' => 26, 'Novembro' => 22, 'Dezembro' => 21), '2012' => array ( 'Outubro' => 27, 'Novembro' => 28, 'Dezembro' => 19) ); foreach ( $temp as $ano => $meses ){ echo "Temperaturas em $ano<br />" ; foreach ( $meses as $mes => $temp ) { echo "$mes: $temp graus<br />" ; } } ?> |
Veja que criamos um array e dentro dele vários outros arrays que guardam temperaturas de meses de um determinado ano. Quando utilizamos o foreach iremos mostrar o ano da temperatura e quantos graus no mês especificado.
Enquanto estamos dentro de um loop, podemos utilizar duas instruções: continue e break. Elas permitem que nós quebremos os laços de repetição.
Veja na Listagem 24 um exemplo da Continue.
Listagem 24. Exemplo Continue.
<?php for ( $a = 1; $a <= 10; $a ++){ if ( $a == 3) { continue ; } $cubo = $a * $a * $a ; echo "O cubo de $a é $cubo<br />" ; } //O cubo de 1 é 1 //O cubo de 2 é 8 //O cubo de 4 é 64 //O cubo de 5 é 125 //O cubo de 6 é 216 //O cubo de 7 é 343 //O cubo de 8 é 512 //O cubo de 9 é 729 //O cubo de 10 é 1000 ?> |
Note que não aparece o cubo de 3, pois fizemos a seguinte verificação: if($a == 3) {continue;}.
Na Listagem 25 vemos um exemplo da instrução Break.
Listagem 25. Exemplo Break.
<?php for ( $a = 1; $a <= 10; $a ++){ if ( $a == 3) { break ; } $cubo = $a * $a * $a ; echo "O cubo de $a é $cubo<br />" ; } //O cubo de 1 é 1 //O cubo de 2 é 8 ?> |
O break para o loop, então veja que só é mostrado o cubo de 1 e 2. Isso porque colocamos a verificação if($a == 3) {break;}, ou seja, chegou no 2 e deu um break.