Objetivo
O objetivo desse material, é disponibilizar um caminho para os Web Designers aprenderem um pouco mais sobre PHP, explicando algumas instruções básicas (se-então-senão, include, por exemplo), e algumas funções que geralmente são úteis, e facilitam o desenvolvimento básico de sites e layouts.
O manual do PHP
Tudo o que será demonstrado nesse artigo, esta documentado no manual oficial do PHP, onde inclusive existem exemplos e comentários de outras pessoas.
O manual do PHP é uma ótima fonte de referência. Lá você tem uma explicação detalhada para a utilização de praticamente todas as funções, e pode ser encontrado aqui: http://www.php.net/manual/pt_BR/index.php
Uma forma rápida de acesso ao manual, é ir direto na página da função desejada, por exemplo:
http://php.net/include
http://php.net/echo
http://php.net/date
http://php.net/string
Os tipos de dados
Os principais tipos de dados em PHP, são: Booleanos, Inteiros, Números de ponto flutuante e Strings.
Não abordarei os demais tipos de dados, pois não serão comentados neste material introdutório.
Booleano, é o tipo de dado Sim / Não, Verdadeiro / Falso, 1 / 0.
Em PHP são descritos como true e false, ou 1 e 0. Onde 1 é true, e 0 é false.
Inteiros (Z), os que você aprendeu no ensino fundamental: …, -2, -1, 0, 1, 2, …
Números de Ponto Flutuante, são números reais: -1.15, 0.333333, 1, 1.5, 400.20, …
e finalmente, uma String é uma cadeia de caracteres (texto, frase, palavra…):
Uma string em PHP é descrita dentre ‘ (aspas simples) ou ” (aspas duplas).
A diferença entre uma string entre aspas simples, e outra entre aspas duplas, é que a string entre aspas duplas, sempre espera por receber uma variável (dentro dela), como será visto mais além, durante a leitura.
“String entre aspas duplas”
‘String entre aspas simples’
Comentários
Assim como no HTML, o PHP também possui comentários, vejamos:
Em HTML:
<!-- Comentário no meio de um arquivo HTML -->
em PHP:
<?php
// Comentário no meio de um arquivo PHP (somente uma linha)
/*
Comentário para
várias linhas, em PHP
(várias linhas)
*/
?>
As condições If-then-else (Se-então-senão)
Não se assute com essa parte do material, pois é só um pré-requisito para o melhor entendimento do material por um todo. Você conseguirá entender melhor isso conforme o andamento da leitura, vendo a aplicação disso na prática.
O if-then-else trabalha em cima de condições, condições que são geralmente são avaliadas através de Operadores Comparativos e Operadores Lógicos.
Os principais Operadores Comparativos, são: == (igual), != (diferente), < (menor), > (maior), <= (menor ou igual), >= (maior ou igual).
Os principais Operadores Lógicos, são: && (e), || (ou) e ! (negação).
Na prática, isso tudo é muito simples:
1 == 1, 1 é igual à 1
1 != 2, 1 é diferente de 2
1 < 2, 1 é menor que 2
2 > 1, 2 é maior que 1
1 <= 2, 1 é menor ou igual à 2
2 >= 2, 2 é maior ou igual à 2
Agora em conjunto com os Operadores Lógicos:
1 == 1 && 1 < 2, 1 é igual à 1, E, 1 é menor que 2.
2 > 1 && 2 >= 2, 2 é maior que 1, E, 2 é maior ou igual à 2.
A sintaxe do if-then-else é mais simples ainda:
If
se (verdade), então
faz isso
fim
If, Else
se (verdade), então:
faz isso
senão
faz isso 2
fim
Agora, traduzindo para o PHP, seria:
If
if (condicao for verdade)
{
echo 'faz isso';
}
If, Else
if (condicao for verdade)
{
echo 'faz isso';
}
else
{
echo 'faz isso 2';
}
O PHP também suporta o Else-If (Senão-se):
<?php
if (numero < 0)
{
// Numéro negativo
}
elseif (numero < 5)
{
// Número menor que 5
}
elseif (numero <= 10)
{
// Número menor ou igual a 10
}
else
{
// Um número qualquer, acima de 10
}
?>
Existe também outra forma de se fazer um If, que é chamado de Operador Ternário:
CONDICAO ? ENTAO : SENAO
em PHP:
<?php 1 == 1 ? 1 : O; ?>
Explicando: Se 1 é igual a 1, então 1, senão 0.
O include
A instrução include pode facilitar muito na criação do layout, pois possibilita separar o layout em arquivos, como no exemplo abaixo:
<?php include 'cabecalho.php'; ?>
Olá Mundo!
<?php include 'rodape.php'; ?>
Notas
- O arquivo utilizado no include não precisa necessáriamente ser PHP, pode ser qualquer tipo de arquivo de texto plano, ou seja, nada de imagens, claro.
- O que o include faz, basicamente, é embutir o arquivo especificado formando um único arquivo.
- Um include pode também conter outros include’s. Você pode ter um include chamado menu.php dentro do seu cabecalho.php.
Utilização de Variáveis
Suponha que o arquivo cabecalho.php contenha o seguinte trecho de código:
<html>
<head>
<title>Título da Página</title>
</head>
Veja que se você utilizar o arquivo cabecalho.php, em todas as suas páginas, todas as páginas terão o mesmo título, pois ele esta definido de forma estática, imutável.
Caso queira que cada página contenha um título diferente, por exemplo: Início, Blog e Contato.
Você deve especificar que o arquivo cabecalho.php contém uma área de conteúdo variável, sujeita a modificações, mutável. Isso é feito através da utilização de variáveis.
Como exemplo, um arquivo chamado contato.php, conteria o seguinte trecho de código:
<?php
$titulo_da_pagina = 'Contato';
?>
<?php include 'cabecalho.php'; ?>
Entre em contato conosco... Telefone: (99) 9999-9999
<?php include 'rodape.php'; ?>
E no arquivo cabecalho.php seria especificada a variável, no lugar do título:
<html>
<head>
<title>Meu Site | <?php echo $titulo_da_pagina; ?></title>
</head>
A instrução echo, basicamente imprime o que é passado de parâmetro. No caso acima, uma variável, que foi pré-definida com o conteúdo: Contato
A sintaxe da variável é simples. Para a criação, utiliza-se:
$nomedavariavel = 'Conteudo da variavel';
O $ (sifrão) é o que identifica uma variável. O nome das variáveis podem conter somente letras, números e _ (underline), mas nunca devem começar com número. O conteúdo delas pode variar:
<?php
$se_for_um_texto = 'Utilize aspas simples...';
$se_for_um_texto = "ou aspas duplas";
$se_for_um_numero = 15;
$se_for_um_valor = 99.99;
?>
Para imprimir uma variável é mais simples:
<?php echo $nomedavariavel; ?>
Utilizando uma variável para especificar um include
Como nós vimos, a sintaxe para um include é a seguinte:
include <STRING>;
Para você poder inserir uma variável dentro da string, a string deverá iniciar e terminar com ” (aspas duplas). Pois uma string com aspas duplas, indica que ela poderá conter variáveis, então tratará o $ (sifrão) de forma diferente, como se fosse uma variável.
$pagina = 'historia'; // não haverá nenhuma variável no meio da string
include "includes/$pagina.php"; // existe uma variável no meio da string
Lembre-se, que se você utilizar aspas simples em uma string que contém uma variável, o sifrão será impresso como se fosse um sifrão mesmo:
<?php
echo 'minha variável $teste';
// imprimirá: minha variável $teste
?>
Notas
- Lembre-se de utilizar o “;“, caso contrário terá problemas.
- Prefira usar ‘ na maioria das vezes, use “ apenas quando for necessário colocar uma variável dentro da string.
- Em alguns códigos, você pode encontrar a função “print” no lugar do “echo“, as duas fazem praticamente a mesma coisa, mas dê sempre preferência ao echo.
Verificação de tipos de variáveis
Você pode verificar se uma variável é do tipo que você espera, exemplos:
<?php
if (is_int(1))
echo 'verdadeiro';
if (is_numeric(1.5))
echo 'verdadeiro';
if (is_string('foobar'))
echo 'verdadeiro';
if (is_string(100))
echo 'falso';
?>
Variáveis Globais: $_GET e $_POST
Supondo que você tenha uma página chamada teste.php, vamos fazer alguns testes com essas variáveis globais.
A variável global $_GET, serve para transportar uma variável da URL para dentro do seu código, por exemplo, tendo o teste.php com o seguinte conteúdo:
<?php echo $_GET['pagina']; ?>
Ao chamarmos: http://seusite/teste.php?pagina=exemplo, você terá:
exemplo
E basicamente é isso. Porém também temos que trabalhar visando que essa variável pode não existir, então é necessário trata-la, para evitar erros, então usamos a condição if-then-else junto à função empty.
A função empty retorna TRUE, caso a variável:
- Não exista
- Seja 0 (zero)
- Seja false (booleano)
- Esteja em branco
Caso contrário, retorna true.
<?php
if (empty($_GET['pagina']))
{
echo 'a variável página não existe, ou esta vazia';
}
else
{
echo $_GET['pagina'];
}
?>
As variáveis $_GET são comumente utilizadas em includes, porém deve haver um cuidado muito grande.
Sempre verifique qual o conteúdo da variável antes de coloca-la no include, por exemplo:
if (empty($_GET['pagina'])) $pagina = NULL;
else $pagina = $_GET['pagina'];
if ($pagina == 'historia') include 'historia.php';
elseif ($pagina == 'contato') include 'contato.php';
elseif ($pagina == 'noticias') include 'noticias.php';
else include 'default.php';
NUNCA utilize:
include $_GET['pagina'] . '.php';
Pois isso poderá ocasionar uma invasão no seu site, mas isso não é o foco do artigo, apenas não faça-o, tenha total controle do que será incluso.
A variável global $_POST, é geralmente utilizada em formulários, de login por exemplo, onde não é recomendado óbviamente mostrar a senha na URL.
Variáveis $_POST são criadas quando um formulário é especificado com method=”POST”, por exemplo:
form.php
<form method="POST" action="teste.php">
Nome: <input type="text" name="meunome" />
Idade: <input type="text" name="idade" />
<input type="submit" value="Enviar" />
</form>
Para recuperar o valor desse campo no PHP, você teria de fazer:
teste.php
<?php
// verificando se o método é mesmo POST
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (empty($_POST['meunome']))
$meunome = ''; // nenhum nome especificado
else
$meunome = $_POST['meunome'];
if (empty($_POST['idade'))
$idade = 0;
else
$idade = $_POST['idade'];
// função is_int(), utilizada pra verificação do tipo Inteiro
if (is_int($idade) && $idade >= 18)
echo "Bem-vindo $nome"; // imprimindo saudação
else
echo "Conteúdo proibido para menores";
}
?>
Simples não?
Trabalhando com Datas
Você pode automatizar aquele famoso “Copyright” no rodapé da página, utilizando a função date() do PHP:
rodape.php
<div class="rodape">
Todos os direitos reservados © 2008-<?php echo date('Y'); ?>
</div>
</body>
</html>
O que vai “dentro” de uma função, é chamado de argumento. No exemplo acima, foi passado apenas um argumento, do tipo string: ‘Y’, o que diz à função date que queremos o ano (Year). Então, será impresso:
Todos direitos reservados © 2008-2009
Exibindo a data de hoje:
<?php echo date('d/m/Y'); ?>
Verificando se é Manhã, Tarde ou Noite (Comentado)
<?php
// Hora
$hora = date('H');
// se Hora for maior que 18 ou menor que 5
// de 18:01 até 23:59 ou 0 até 04:59
if ($hora > 18 || $hora < 5) echo 'Boa Noite';
// se Hora for menor que 12
// de 05:00 até 11:59
elseif ($hora < 12) echo 'Bom dia';
// senão... é de tarde
// de 12:00 até 18:00
else echo 'Boa tarde';
?>
Uma lista com todos os formatos para a função “date” pode ser encontrada no manual do PHP, em: http://www.php.net/manual/en/function.date.php
Tratamento de Strings
strtolower()
A função strtolower() transforma todos caracteres em letras minúsculas.
Exemplo
<?php echo strtolower('FooBar'); ?>
Imprimirá
foobar
Manual
strtoupper()
A função strtoupper() é o inverso da strtolower(), transforma todos caracteres em letras maiúsculas.
Exemplo
<?php echo strtoupper('foobar'); ?>
Imprimirá
FOOBAR
Manual
number_format()
A função number_format() formata números, valores por exemplo.
Exemplo
R$ <?php echo number_format(1300.40, 2, ',', '.'); ?>
Imprimirá
R$ 1.300,40
Manual
http://br2.php.net/number_format
trim()
A função trim() remove espaços no começo e no fim da string.
Exemplo
<?php echo trim(' Texto'); ?>
É muito útil também para fazer validações:
<?php
if (trim($nome) == '')
echo 'Nome em branco';
?>
Imprimirá
Texto (sem nenhum espaço no começo)
Manual
wordwrap()
A função wordwrap() quebra um texto em partes, a cada N caracteres.
Exemplo
<?php echo wordwrap('um texto muito, mas muito longo.', 8, '<br />'); ?>
Imprimirá
um texto<br />
muito, <br />
mas muit<br />
o longo.
Manual
nl2br()
A função nl2br() transforma quebras de linha em <br /> (HTML). Muito útil também quando retornando um campo texto, de um banco de dados.
Exemplo
<?php echo nl2br('um
outro texto
só para exemplo...'); ?>
Imprimirá
um<br />
outro texto<br />
só para exemplo...
Manual
strlen()
A função strlen() retorna quantos caracteres a string possui.
Exemplo
<?php echo strlen('cinco'); ?>
Imprimirá
5
Manual
htmlentities()
A função htmlentities() converte caracteres que podem ocasionar problemas no seu HTML, como <, > e & em entidades correspondentes, como: <, > e &.
Exemplo
<?php echo strlen('<foo>bar&'); ?>
Imprimirá
<foo>bar&
Manual
http://br2.php.net/htmlentities
urlencode()
A função urlencode() serve para você codificar uma string de uma forma que ela fique de acordo com a especificação, do que é permitido utilizar em uma URL.
Exemplo
<?php
$titulo = 'Primeira noticia, teste';
echo 'http://meusite/noticia.php?id=10&titulo=' . urlencode($titulo);
?>
Imprimirá
http://meusite/noticia.php?id=10&titulo=Primeira+noticia%2C+teste
Manual
urldecode()
A função urldecode() é o inverso da urlencode().
Exemplo
<?php echo urldecode('Primeira+noticia%2C+teste'); ?>
Imprimirá
Primeira noticia, teste
Manual
Só não entendi uma coisa. Se empty = vazio, certo? Então, se empty retornar “falso” é porque está “cheio”, e não “vazio”, com conteudo branco, etc. Entendeu o que eu quis dizer? huaeuhea
Mas o post ta massa. abraços
Bem visto.
A função empty() retorna TRUE e não false, caso a variável esteja vazia, óbviamente.
Corrigido. :)
Valeu!
Genial o post cara, fruto de mais um ótimo papo contigo no messenger.
Como tem muita coisa para minha cabeça de designer, estou indo devagar, lendo e mastigando os sub-tópicos que ai estão.
Por hora nenhuma dúvida, está bem explicadinho!
Recomendo o post para todos os webdesigners, pois não basta saber xhtml/css, é bom ter uma noçãozinha de PHP para poder entender coisas simples de jQuery ou ao usar includes que facilitam muito a vida do webdesigner.
É bacana também ao parar para pensar que o webdesigner e os programador irão trabalhar juntos nos projetos e esta parte da marcação de texto e inicio da programação eu vejo como um ponto onde as duas profissões se mesclam.
Assim as duas saem ganhando, pois para o designer é interessante por ser uma área além dos seus limites e para o programador algo tão simples que os livra de se preocupar em fazer funcionar formulários de contato, menus sanfonados e banners carousel. ;D
Parabéns! Grande abraço!