David Sklar
Novatec
Authorized Portuguese translation of the English edition of Learning PHP, ISBN 9781491933572 © 2016 Davis Sklar. This translation is published and sold by permission of O'Reilly Media, Inc., which owns or controls all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra Learning PHP, ISBN 9781491933572 © 2016 Davis Sklar. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra. © Novatec Editora Ltda. 2016. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates MP20160801 Assistente editorial: Priscila A. Yoshimatsu Tradução: Aldir José Coelho Corrêa da Silva Revisão gramatical: Smirna Cavalheiro Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-518-9 Histórico de impressões: Agosto/2016
Primeira edição
Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 – São Paulo, SP – Brasil Tel.: +55 11 2959-6529 E-mail: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec
capítulo 1
Orientação e primeiras etapas
Há várias boas razões para se escrever programas de computador em PHP. Você poderia querer aprender PHP porque precisa montar um pequeno site que tem alguns elementos interativos. Ou a linguagem PHP pode estar sendo usada em seu local de trabalho e você precisa conhecê-la. Este capítulo fornece contexto de como o PHP se encaixa no quebra-cabeça da construção de sites: o que ele pode fazer e por que é tão bom no que faz. Você também examinará pela primeira vez a linguagem PHP e a verá em ação.
O lugar do PHP no universo da web PHP é uma linguagem de programação que normalmente é usada na construção de sites. Em vez de um programa PHP ser executado em um computador desktop para uso de uma única pessoa, ele costuma ser executado em um servidor web e acessado por muitas pessoas por meio de navegadores web em seus próprios computadores. Esta seção explica que papel o PHP desempenha na interação entre um navegador e um servidor web. Quando você se senta em frente ao computador e abre uma página web usando um navegador como o Safari ou o Firefox, aciona uma pequena conversa pela internet entre dois computadores. Essa conversa, e como ela faz uma página web aparecer em sua tela, é mostrada na Figura 1.1. Veja o que está ocorrendo nas etapas numeradas do diagrama: 1. Você digita www.example.com/catalog.html na barra de endereço de seu navegador. 2. O navegador envia uma mensagem pela internet para o computador chamado www.example.com solicitando a página /catalog.html.
21
22
Aprendendo PHP
3. O servidor HTTP Apache, um programa sendo executado no computador www.example.com, recebe a mensagem e lê o arquivo catalog.html em sua unidade de disco. 4. O Apache retorna o conteúdo do arquivo para o seu computador pela internet como uma resposta à solicitação do navegador. 5. Seu navegador exibe a página na tela, seguindo as instruções das tags HTML da página. “Querido www.example.com, por favor, me envie /catalog.html.”
Seu PC desktop Paciência Word
Navegador web
Servidor web Apache
2 Internet
5
4 Aqui está sua página.
Outlook
1
3 Unidade de disco
Address: http://www.example.com/catalog.html
Figura 1.1 – Comunicação entre cliente e servidor sem PHP.
Sempre que um navegador solicita http://www.example.com/catalog.html, o servidor web retorna o conteúdo do mesmo arquivo catalog.html. A única vez em que a resposta do servidor web muda é quando alguém edita o arquivo no servidor. Porém, quando o PHP está envolvido, o servidor tem mais trabalho em sua parte da conversa. A Figura 1.2 mostra o que ocorre quando um navegador web solicita uma página que é gerada por PHP. Veja o que está ocorrendo nas etapas numeradas da conversa com PHP: 1. Você digita www.example.com/catalog/yak.php na barra de endereço de seu navegador. 2. O navegador envia uma mensagem pela internet para o computador chamado www.example.com solicitando a página /catalog/yak.php. 3. O servidor HTTP Apache, um programa sendo executado no computador www.example.com, recebe a mensagem e pergunta ao engine PHP, outro programa sendo executado no computador www.example.com, “Qual é o conteúdo de /catalog/yak.php?”. 4. O engine PHP lê o arquivo yak.php na unidade de disco.
Capítulo 1 ■ Orientação e primeiras etapas
23
5. O engine PHP executa os comandos de yak.php, possivelmente trocando dados com um programa de banco de dados como o MySQL. 6. O engine PHP pega a saída do programa yak.php e a retorna para o servidor HTTP Apache como resposta a “Qual é o conteúdo de /catalog/yak.php?”. 7. O servidor HTTP Apache retorna o conteúdo da página que recebeu do engine PHP para seu computador pela internet em resposta à solicitação de seu navegador. 8. Seu navegador exibe a página na tela, seguindo as instruções das tags HTML da página. “Querido www.example.com, por favor, me envie /catalog/yak.php”
Seu PC desktop Paciência Word
Navegador web
Apache
2 Internet
8
Outlook
1
Servidor web
7
6
Aqui está sua página.
3 PHP
5
4 MySQL
Address: http://www.example.com/catalog/yak.php
Unidade de disco
Figura 1.2 – Comunicação entre cliente e servidor com PHP.
PHP é uma linguagem de programação. Algo no computador do servidor web lê os programas PHP, que são instruções escritas nessa linguagem de programação, e descobre o que fazer. O engine PHP segue as instruções. Geralmente, os programadores dizem “PHP” se referindo à linguagem de programação ou ao engine. Neste livro, “PHP” significa a linguagem de programação. “Engine PHP” é a entidade que segue os comandos dos programas PHP e gera as páginas web. Se comparássemos o PHP (a linguagem de programação) ao idioma português (a linguagem humana), o engine PHP seria uma pessoa que fala português. O idioma português define muitas palavras e combinações que, quando lidas ou ouvidas por alguém que fala português, produzem significados que fazem as pessoas terem reações, como se sentir embaraçadas, ir à loja comprar leite ou vestir as calças. Os programas escritos em PHP (a linguagem de programação) causam reações no engine PHP como conversar com um banco de dados, gerar uma página web personalizada ou exibir uma imagem.
24
Aprendendo PHP
Este livro enfoca os detalhes da criação desses programas – isto é, o que ocorre na etapa 5 da Figura 1.2 (embora o Apêndice A contenha detalhes de como você pode configurar e instalar o engine PHP em seu servidor web). O PHP é chamado de linguagem do lado do servidor porque, como a Figura 1.2 ilustra, é executado em um servidor web. Uma linguagem como JavaScript pode ser usada como linguagem do lado do cliente porque, embutida em um navegador web, pode levá-lo, durante sua execução em um PC desktop, a fazer algo como abrir uma nova janela. Uma vez que o servidor web enviar para o cliente a página web gerada (etapa 7 da Figura 1.2), o PHP sairá de cena. Se o conteúdo da página tiver JavaScript, esse código será executado no cliente, mas ele é totalmente desconectado do programa PHP que gerou a página. Uma página web simples em HTML é como uma carta-padrão do tipo “desculpe se encontrou uma barata em sua sopa” que você receberia após enviar uma reclamação malcriada para uma linha aérea de um voo infestado de insetos. Quando a carta chega à sede da linha aérea, a secretária sobrecarregada do departamento de atendimento ao cliente pega no arquivo a “carta de resposta com conteúdo da barata”, faz uma cópia e a envia pelo correio para você. Cada solicitação semelhante recebe exatamente a mesma resposta. Por outro lado, uma página dinâmica gerada em PHP é como um cartão postal enviado para um amigo do outro lado do mundo. Você pode colocar o que quiser na página – rabiscos, diagramas, haicais e histórias carinhosas de como sua filha recém-nascida é fofa quando esmaga cenouras e suja toda a cozinha. O conteúdo de sua carta é personalizado para a pessoa específica para quem está sendo enviada. Uma vez que você enviar a carta pelo correio, no entanto, não poderá mais modificá-la. Ela atravessará o planeta e será lida por seu amigo. Você não terá como modificar a carta quando ele a estiver lendo. Agora suponhamos que você estivesse escrevendo uma carta para uma amiga que gostasse de jogos. Junto com os rabiscos e histórias, você incluiria instruções como “corte a pequena figura do sapo no topo da página e cole-a sobre o minúsculo coelho na parte inferior” e “leia o último parágrafo da página antes de ler os outros”. Enquanto sua amiga lê a carta, ela também executará as ações solicitadas. Essas ações são como o código JavaScript de uma página web. São definidas quando a carta é escrita e depois não mudam mais. Porém, quando o destinatário segue as instruções, a carta pode mudar. Da mesma forma, um navegador web segue os comandos JavaScript de uma página e abre janelas, altera opções de menus de formulários ou atualiza a página para um novo URL.
Capítulo 1 ■ Orientação e primeiras etapas
25
O que há de tão interessante no PHP? Você poderia se interessar pela linguagem PHP porque ela é gratuita, porque é fácil de aprender ou porque seu chefe lhe disse que um projeto PHP começará na próxima semana. Já que usará o PHP, é preciso saber um pouco mais sobre o que o torna especial. Na próxima vez que alguém lhe perguntar “O que há de tão interessante em PHP?” use esta seção como base para sua resposta.
PHP é gratuito (não custa nada) Você não precisa pagar nada a ninguém para usar o PHP. Não importa se está executando o engine PHP em um PC antigo de mais de dez anos em seu porão ou em uma sala cheia de servidores de “nível empresarial” que custaram milhões de dólares, não haverá taxas de licenciamento, de suporte, de manutenção, de atualização ou qualquer outro tipo de cobrança. O OS X e quase todas as distribuições do Linux já vêm com o PHP instalado. Se o seu não veio, ou se está usando outro sistema operacional como o Windows, você pode baixar o PHP a partir de http://www.php.net. O Apêndice A tem instruções detalhadas de como instalar o PHP.
PHP é livre (não impõe restrições) Como um projeto open source, o PHP disponibiliza seu mecanismo interno para qualquer pessoa que quiser inspecioná-lo. Se ele não fizer o esperado, ou se você estiver simplesmente curioso sobre por que um recurso funciona de determinada maneira, é possível investigar a mecânica do engine PHP (escrito na linguagem de programação C) para ver suas peculiaridades. Mesmo se você não tiver o conhecimento técnico para fazê-lo, pode pedir a alguém que o tenha para investigar em seu nome. A maioria das pessoas não sabe consertar seus carros, mas é bom poder levá-los a um mecânico que abrirá o capô e fará o conserto.
PHP é independente de plataforma Você pode usar PHP com um servidor web executando o Windows, o Mac OS X, o Linux e muitas outras versões do Unix. Além disso, caso se alterne entre sistemas operacionais de servidores web, não precisará alterar nenhum de seus programas PHP. É só copiá-los do servidor Windows para o servidor Unix e eles continuarão funcionando.
26
Aprendendo PHP
Embora o Apache seja o servidor web mais popular usado com PHP, você também pode usar o ngnix, o Microsoft Internet Information Server (IIS) ou qualquer outro servidor web que dê suporte ao padrão CGI. O PHP também funciona com um grande número de bancos de dados, que inclui o MySQL, PostgreSQL, Oracle, Microsoft SQL Server, SQLite, Redis e MongoDB. Se os acrônimos do último parágrafo lhe deixaram confuso, não se preocupe. Tudo se resume a isso: independentemente do sistema empregado, é provável que o PHP seja executado nele sem problemas e funcione com qualquer banco de dados que você já esteja usando.
PHP é amplamente usado O PHP é usado em mais de 200 milhões de sites, que vão desde incontáveis e minúsculas páginas pessoais a gigantes como Facebook, Wikipédia, Tumblr, Slack e Yahoo. Há muitos livros, revistas e sites dedicados ao ensino de PHP e à investigação do que é possível fazer com ele. Também existem empresas que fornecem suporte e treinamento em PHP. Resumindo, se você é usuário de PHP, tenha certeza de que não está sozinho.
PHP oculta sua complexidade Você pode construir poderosos mecanismos de e-commerce em PHP para manipular milhões de clientes. Também pode construir um site pequeno que mantenha automaticamente links de uma lista variável de artigos ou press releases. Quando usar PHP em um projeto mais simples, a linguagem não o atrapalhará com preocupações relevantes apenas em um sistema massivo. Quando precisar de recursos avançados como cache, bibliotecas personalizadas ou geração dinâmica de imagens, eles estarão disponíveis. Se não precisar deles, não terá de se preocupar. Poderá se dedicar às ações básicas de manipular entradas de usuário e exibir saídas.
PHP foi projetado para a programação na web Ao contrário da maioria das outras linguagens de programação, desde o início a linguagem PHP foi criada para a geração de páginas web. Isso significa que tarefas comuns de programação na web, como acessar envios de formulário e conversar com um banco de dados, com frequência são mais fáceis com essa linguagem. O PHP vem com os recursos de formatação de HTML, manipulação de datas e horas e gerenciamento de cookies – tarefas que em outras linguagens de programação geralmente só estão disponíveis em bibliotecas de complementos.
Capítulo 1 ■ Orientação e primeiras etapas
27
O PHP em ação Pronto para sua primeira experiência em PHP? Esta seção contém algumas listagens de programas e explicações do que elas fazem. Se não entender o que está acontecendo em cada listagem, não se preocupe! É para isso que serve o restante do livro. Você precisa ler essas listagens para ter uma ideia da aparência dos programas PHP e ver uma descrição de como eles funcionam. Ainda não é hora de se preocupar com detalhes. Quando recebe um programa para executar, o engine PHP só se atém às partes do programa que ficam entre as tags PHP de abertura e fechamento. O que quer que haja fora dessas tags é exibido sem modificação. Isso facilita embutir pequenos trechos de PHP em páginas que em grande parte contêm HTML. O engine PHP executa os comandos existentes entre <?php (tag PHP de abertura) e ?> (tag PHP de fechamento). Normalmente, as páginas PHP residem em arquivos cujos nomes terminam em .php. O exemplo 1.1 mostra uma página com um único comando PHP.
Exemplo 1.1 – Hello, World! <html> <head><title>PHP says hello</title></head> <body> <b> <?php print "Hello, World!"; ?> </b> </body> </html>
A saída do Exemplo 1.1 é: <html> <head><title>PHP says hello</title></head> <body> <b> Hello, World!</b> </body> </html>
28
Aprendendo PHP
Em seu navegador web, o resultado será semelhante ao da Figura 1.3.
Figura 1.3 – Dizendo olá com PHP.
No entanto, exibir uma mensagem que nunca muda não é um uso tão empolgante para uma linguagem como PHP. Você poderia ter incluído a mensagem “Hello, World!” em uma página HTML simples com o mesmo resultado. É mais útil exibir dados dinâmicos, isto é, informações que podem mudar. Uma das fontes de informação mais comuns para programas PHP é o usuário: o navegador exibe um formulário, o usuário insere informações e pressiona o botão “enviar”, o navegador envia as informações para o servidor e, para concluir, o servidor as passa para o engine PHP onde elas ficam disponíveis para o programa. O Exemplo 1.2 é um formulário HTML sem PHP. O formulário é composto por uma caixa de texto chamada user e um botão Submit e é enviado para sayhello.php, que é especificado via atributo action da tag <form>.
Exemplo 1.2 – Formulário HTML para o envio de dados <form method="POST" action="sayhello.php"> Your Name: <input type="text" name="user" /> <br/> <button type="submit"">Say Hello</button> </form>
Seu navegador transformará o HTML do Exemplo 1.2 no formulário mostrado na Figura 1.4. O Exemplo 1.3 mostra o programa sayhello.php que exibe uma saudação para a pessoa nomeada na caixa de texto do formulário.
Capítulo 1 ■ Orientação e primeiras etapas
29
Figura 1.4 – Exibindo um formulário.
Exemplo 1.3 – Dados dinâmicos <?php print "Hello, "; // Exibe o nome enviado no parâmetro chamado 'user' print $_POST['user']; print "!"; ?>
Se você digitar Ellen na caixa de texto e enviar o formulário, o Exemplo 1.3 exibirá Hello, Ellen!. A Figura 1.5 mostra como seria a exibição em seu navegador web.
Figura 1.5 – Exibindo um parâmetro do formulário. $_POST armazena os valores dos parâmetros enviados. Em terminologia de programação, trata-se de uma variável, assim chamada porque você pode alterar os valores que ela contém. Essa variável em particular é uma variável de array, porque
pode conter mais de um valor. Esse array específico será discutido no Capítulo 7. Os arrays como um todo serão discutidos no Capítulo 4.
30
Aprendendo PHP
Nesse exemplo, a linha que começa com // chama-se linha de comentário. As linhas de comentário existem para os leitores humanos dos códigos-fonte e são ignoradas pelo engine PHP. Os comentários são úteis para a inclusão de informações sobre como os programas funcionam. A Seção “Comentários”, da página 37, discute os comentários com mais detalhes. Você também pode usar PHP para exibir o formulário HTML que permite que alguém envie o valor de user. Isso é mostrado no Exemplo 1.4.
Exemplo 1.4 – Exibindo um formulário <?php print <<<_HTML_ <form method="post" action="$_SERVER[PHP_SELF]"> Your Name: <input type="text" name="user" /> <br/> <button type="submit">Say Hello</button> </form> _HTML_; ?>
O Exemplo 1.4 usa uma sintaxe de string chamada here document. Tudo que estiver entre <<<_HTML_ e _HTML_ será passado para o comando print para ser exibido. Como no Exemplo 1.3, uma variável dentro da string é substituída por seu valor. Dessa vez, a variável é $_SERVER[PHP_SELF]. Essa é uma variável PHP especial que contém o URL (sem o protocolo ou o nome de host) da página atual. Se o URL da página no Exemplo 1.4 for http://www.example.com/users/enter.php, então, $_SERVER[PHP_SELF] conterá /users/enter.php. Com $_SERVER[PHP_SELF] sendo a ação do formulário, você pode inserir o código de exibição do formulário e o de execução de algo com os dados enviados na mesma página. O Exemplo 1.5 combina os Exemplos 1.3 e 1.4 em uma única página que abre um formulário e exibe uma saudação quando ele é enviado.
Exemplo 1.5 – Exibindo uma saudação ou um formulário <?php // Exibe uma saudação se o formulário for enviado if ($_POST['user']) { print "Hello, ";
Capítulo 1 ■ Orientação e primeiras etapas
31
// Exibe o nome enviado no parâmetro chamado 'user' print $_POST['user']; print "!"; } else { // Caso contrário, exibe o formulário print <<<_HTML_ <form method="post" action="$_SERVER[PHP_SELF]"> Your Name: <input type="text" name="user" /> <br/> <button type="submit">Say Hello</button> </form> _HTML_; } ?>
O Exemplo 1.5 usa a estrutura if() para ver se o navegador enviou um valor para o parâmetro user. Ele a emprega para decidir qual das duas ações deve executar: exibir uma saudação ou um formulário. O Capítulo 3 discute if(). O uso de $_SERVER[PHP_SELF] e o processamento de formulários são discutidos no Capítulo 7. O PHP tem uma extensa biblioteca de funções internas que você pode usar em seus programas. Essas funções o ajudarão a executar tarefas comuns. Uma das funções internas é number_format(), que fornece a versão formatada de um número. O Exemplo 1.6 usa number_format() para exibir um número.
Exemplo 1.6 – Exibindo um número formatado <?php print "The population of the US is about: "; print number_format(320853904); ?>
O Exemplo 1.6 exibe: The population of the US is about: 320,853,904
O Capítulo 5 é sobre funções. Ele mostra como podemos escrever nossa própria função e explica a sintaxe que chama e manipula os resultados das funções. Muitas funções, inclusive number_format(), têm um valor de retorno. Ele é o resultado da execução da função. No Exemplo 1.6, os dados que a segunda instrução print recebe são o valor de retorno de number_format(). Nesse caso, trata-se da densidade populacional formatada com vírgulas.
32
Aprendendo PHP
Um dos tipos de programas mais comuns escritos em PHP é aquele que exibe uma página web contendo informações recuperadas em um banco de dados. Quando permitimos que parâmetros enviados em formulários controlem o que será extraído de um banco de dados, abrimos a porta para todo um universo de interatividade no site. O Exemplo 1.7 mostra um programa PHP que se conecta a um servidor de banco de dados, recupera uma lista de iguarias e seus preços de acordo com o valor do parâmetro meal e exibe essas iguarias e preços em uma tabela HTML.
Exemplo 1.7 – Exibindo informações a partir de um banco de dados <?php // Usa o banco de dados SQLite 'dinner.db' $db = new PDO('sqlite:dinner.db'); // Define quais são as refeições permitidas $meals = array('breakfast','lunch','dinner'); // Verifica se o parâmetro "meal" enviado contém "breakfast", "lunch" ou "dinner" if (in_array($_POST['meal'], $meals)) { // Em caso afirmativo, obtém todas as iguarias servidas na refeição especificada $stmt = $db->prepare('SELECT dish,price FROM meals WHERE meal LIKE ?'); $stmt->execute(array($_POST['meal'])); $rows = $stmt->fetchAll(); // Se não forem encontradas iguarias no banco de dados, informa isso if (count($rows) == 0) { print "No dishes available."; } else { // Exibe cada iguaria e seu preço como uma linha de uma tabela HTML print '<table><tr><th>Dish</th><th>Price</th></tr>'; foreach ($rows as $row) { print "<tr><td>$row[0]</td><td>$row[1]</td></tr>"; } print "</table>"; } } else { // Essa mensagem será exibida se o parâmetro "meal" enviado não contiver // "breakfast", "lunch" ou "dinner" print "Unknown meal."; } ?>
Capítulo 1 ■ Orientação e primeiras etapas
33
Há muita coisa acontecendo no Exemplo 1.7, mas o fato de ele só fazer uso de 20 linhas de código (sem os comentários) para criar essa página dinâmica baseada em banco de dados é uma demonstração da simplicidade e do poder do PHP. As explicações a seguir descrevem o que está acontecendo nessas 20 linhas. A função new PDO() no início do exemplo estabelece a conexão com o banco de dados SQLite usando um arquivo específico. Essas funções, como as outras funções de banco de dados usadas nesse exemplo (prepare(), execute() e fetchAll()), serão explicadas com mais detalhes no Capítulo 8. Os elementos do programa que começam com $, como $db, $_POST, $stmt e $row, são variáveis. As variáveis contêm valores que podem mudar quando o programa for executado ou que serão criados em um ponto do programa e salvos para uso posterior. O Capítulo 2 fala sobre as variáveis. Após a conexão com o banco de dados, a próxima tarefa é ver que refeição o usuário solicitou. O array $meals é inicializado com as refeições permitidas: breakfast, lunch e dinner. A instrução in_array($POST['meal'], $meals) verifica se o parâmetro meal enviado (o valor de $_POST['meal']) está no array $meals. Se não estiver, a execução pulará para o fim do exemplo, após o último else, e o programa exibirá Unknown meal. Se uma refeição aceitável tiver sido enviada, prepare() e execute() emitirão uma consulta para o banco de dados. Por exemplo, se a refeição for breakfast, a consulta enviada será a descrita a seguir: SELECT dish,price FROM meals WHERE meal LIKE 'breakfast'
Consultas ao SQLite e à maioria dos outros bancos de dados relacionais são escritas em uma linguagem chamada Structured Query Language (SQL). O Capítulo 8 fornece detalhes sobre o SQL. A função prepare() retorna um identificador que podemos usar para obter mais informações sobre a consulta. A função fetchAll() usa esse identificador para acessar todas as refeições coincidentes que a consulta encontrou no banco de dados. Se não houver refeições aplicáveis, o programa exibirá No dishes available. Caso contrário, ele exibirá informações sobre as refeições encontradas. O programa exibe o começo da tabela HTML. Em seguida, ele usa a estrutura foreach para processar cada iguaria que a consulta encontrou. A instrução print usa elementos do array retornado por fetchAll() para exibir uma linha da tabela por iguaria.
34
Aprendendo PHP
Regras básicas dos programas PHP Esta seção descreverá algumas regras básicas da estrutura dos programas PHP. Com perguntas mais estruturais que básicas como “O que faço para imprimir algo?” ou “Como adiciono dois números?”, esses pré-aspectos básicos seriam como alguém lhe dizer que você deve ler as páginas deste livro de cima para baixo e da esquerda para a direita ou que o que há de importante na página são os rabiscos pretos e não as grandes áreas brancas. Se você já teve alguma experiência com PHP ou é o tipo de pessoa que prefere mexer em todos os botões de seu novo Blu-Ray player antes de consultar o manual para ver como eles funcionam, sinta-se à vontade para pular para o Capítulo 2 agora e voltar aqui depois. Se escrever alguns programas PHP por conta própria e eles não se comportarem como esperado, ou se o engine PHP reclamar de “erros de análise” quando tentar executar seu programa, volte a esta seção para uma consulta.
Tags de abertura e fechamento Todos os exemplos que você viu neste capítulo usaram <?php como tag de abertura e ?> como tag de fechamento. O engine PHP ignorará qualquer coisa que esteja fora dessas tags. O texto existente antes da tag de abertura ou após a tag de fechamento é exibido sem interferência do engine PHP. Você não precisa incluir a tag de fechamento no fim de um arquivo PHP. Se o engine PHP alcançar o fim de um arquivo e não encontrar uma tag de fechamento, ele agirá como se houvesse uma como último elemento do arquivo. Isso é muito útil para assegurar que itens adicionais invisíveis (como linhas em branco) existentes após uma tag de fechamento não entrem acidentalmente na saída de seu programa. Um programa PHP pode ter vários pares de tags de abertura e fechamento, como mostrado no Exemplo 1.8.
Exemplo 1.8 – Várias tags de abertura e fechamento Five plus five is: <?php print 5 + 5; ?> <p> Four plus four is: <?php print 4 + 4; ?> <p> <img src="vacation.jpg" alt="My Vacation" />
Capítulo 1 ■ Orientação e primeiras etapas
35
O código-fonte PHP existente dentro de cada conjunto de tags <?php ?> é processado pelo engine PHP e o resto da página é exibido como se encontra. O Exemplo 1.8 exibirá: Five plus five is: 10<p> Four plus four is: 8<p> <img src="vacation.jpg" alt="My Vacation" />
Alguns programas PHP mais antigos usam <? como tag de abertura em vez de <?php. O símbolo <? é chamado de tag de abertura curta já que é menor que <?php. Em geral, é melhor usar a tag de abertura comum <?php porque seu funcionamento será garantido em qualquer servidor que estiver executando o engine PHP. O suporte à tag curta pode ser ativado ou desativado com a definição de uma configuração PHP. O Apêndice A mostra como você pode modificar sua configuração PHP para controlar que tags de abertura serão válidas em seus programas. O resto dos exemplos deste capítulo começa com a tag de abertura <?php e termina com ?>. Em capítulos subsequentes, nem todos os exemplos têm tags de abertura e fechamento – mas lembre-se, seus programas precisarão delas para o engine PHP reconhecer seu código.
Espaço em branco e diferenciação entre letras maiúsculas e minúsculas Como todos os programas PHP, os exemplos desta seção são compostos por uma série de instruções, todas terminando com ponto e vírgula. Você pode inserir várias instruções PHP na mesma linha de um programa contanto que elas sejam separadas por ponto e vírgula. É possível colocar quantas linhas em branco forem necessárias entre as instruções. O engine PHP as ignora. O símbolo de ponto e vírgula informa ao engine que uma instrução terminou e outra está para começar. A inexistência de espaço em branco ou a ocorrência de vários espaços em branco entre as instruções não afeta a execução do programa. (Espaço em branco é um termo usado pelos programadores para caracteres invisíveis como os espaços, tabulações e novas linhas.) Na prática, o estilo recomendado seria inserir uma única instrução em cada linha e linhas em branco entre as instruções somente quando isso melhorar a legibilidade de seu código-fonte. O espaçamento usado nos Exemplos 1.9 e 1.10 é inadequado. Em vez disso, formate seu código como no Exemplo 1.11.
36
Aprendendo PHP
Exemplo 1.9 – Este código PHP ficou muito confuso <?php print "Hello"; print " World!"; ?>
Exemplo 1.10 – Já este ficou muito espaçado <?php print "Hello"; print " World!"; ?>
Exemplo 1.11 – Este código PHP está na medida exata <?php print "Hello"; print " World!"; ?>
Além de ignorar o espaço em branco existente entre as linhas, o engine PHP também o ignora entre palavras-chave e valores da linguagem. Você pode não ter espaços, ter um espaço ou ter uma centena de espaços entre print e "Hello, World!" e novamente entre "Hello, World!" e o ponto e vírgula no fim da linha. Um bom estilo de codificação seria inserir um único espaço entre print e o valor que está sendo exibido e colocar um ponto e vírgula imediatamente após o valor. O Exemplo 1.12 mostra três linhas, uma com espaçamento excessivo, a outra com espaçamento reduzido e a última com a medida exata.
Exemplo 1.12 – Espaçamento <?php print "Espaços demais" ; print"Muito poucos espaços"; print "A quantidade certa de espaços"; ?>
As palavras-chave (como print) e os nomes de funções (como number_format) da linguagem não diferenciam maiúsculas de minúsculas. Para o engine PHP tanto faz se você usar letras maiúsculas, letras minúsculas, ou ambas quando inserir palavras-chave e nomes de funções em seus programas. As instruções do Exemplo 1.13 são idênticas se considerarmos o ponto de vista do engine.
Capítulo 1 ■ Orientação e primeiras etapas
37
Exemplo 1.13 – Palavras-chave e nomes de funções não diferenciam maiúsculas de minúsculas <?php // Todas essas quatro linhas fazem a mesma coisa print number_format(320853904); PRINT Number_Format(320853904); Print number_format(320853904); pRiNt NUMBER_FORMAT(320853904); ?>
Comentários Como você viu em alguns dos exemplos deste capítulo, os comentários são uma maneira de explicar para outras pessoas como seu programa funciona. Comentários em código-fonte são uma parte essencial de qualquer programa. Quando você estiver codificando, o que escrever pode parecer muito claro naquele momento. Alguns meses depois, no entanto, quando precisar voltar ao programa para modificá-lo, sua brilhante lógica pode não ser tão óbvia. É aí que os comentários entram em cena. Ao explicar em linguagem simples como o programa funciona, os comentários tornam os programas muito mais inteligíveis. Os comentários são ainda mais importantes quando a pessoa que precisa modificar o programa não é o autor original. Faça um favor a você mesmo e a qualquer outra pessoa que tiver a oportunidade de ler seu código-fonte e preencha seus programas com muitos comentários. Talvez devido à sua importância, o PHP fornece várias maneiras de inserir comentários em programas. Uma sintaxe que já vimos é começar a linha com //. Isso solicita ao engine PHP que trate tudo que se encontra nessa linha como um comentário. Após o fim da linha, o código é tratado normalmente. Esse estilo de comentário também é usado em outras linguagens de programação como C++, JavaScript e Java. É possível inserir // em uma linha depois de uma instrução para que o resto dela seja tratado como comentário. O PHP também dá suporte a comentários de linha única no estilo Perl e de shell. São linhas que começam com #. Você pode usar # para começar um comentário nos mesmos locais que usaria //, mas o estilo moderno dá preferência a // em vez de #. Alguns comentários de linha única são mostrados no exemplo 1.14.
38
Aprendendo PHP
Exemplo 1.14 – Comentários de linha única com // ou # <?php // Esta linha é um comentário print "Smoked Fish Soup "; print 'costs $3.25.'; # Adiciona outra iguaria ao menu print 'Duck with Pea Shoots '; print 'costs $9.50.'; // Você pode inserir // ou # dentro de comentários de linha única // O uso de // ou # em outro local da linha também inicia um comentário print 'Shark Fin Soup'; // Espero que esteja apetitoso! print 'costs $25.00!'; # Está ficando caro! # Inserir // ou # dentro de uma string não inicia um comentário print 'http://www.example.com'; print 'http://www.example.com/menu.php#dinner'; ?>
Para inserir um comentário de várias linhas, inicie-o com /* e termine-o com */. Tudo que estiver entre /* e */ será tratado como um comentário pelo engine PHP. Os comentários de várias linhas são úteis para a desativação temporária de um pequeno bloco de código. O Exemplo 1.5 mostra alguns comentários de várias linhas.
Exemplo 1.15 – Comentários de várias linhas <?php /* Adicionaremos algumas coisas ao menu: - Smoked Fish Soup - Duck with Pea Shoots - Shark Fin Soup */ print 'Smoked Fish Soup, Duck with Pea Shoots, Shark Fin Soup '; print 'Cost: 3.25 + 9.50 + 25.00'; /* Este é o menu antigo: As linhas a seguir estão dentro do comentário para que não sejam executadas. print 'Hamburger, French Fries, Cola '; print 'Cost: 0.99 + 1.25 + 1.50'; */ ?>
Capítulo 1 ■ Orientação e primeiras etapas
39
Não há uma regra estrita em PHP sobre que estilo de comentário é o melhor. Com frequência, os comentários de várias linhas são mais fáceis de usar, principalmente quando queremos desativar um bloco de código ou escrever algumas linhas para explicar uma função. No entanto, quando você quiser adicionar uma explicação curta ao fim de uma linha, um comentário de estilo // servirá. Use o estilo com o qual se sentir melhor.
Resumo do capítulo Este capítulo abordou: • O uso de PHP por um servidor web para a criação de uma resposta ou documento a ser retornado para o navegador. • PHP como linguagem do lado do servidor, o que significa ser executada no servidor web (o oposto de uma linguagem do lado do cliente como JavaScript que é executada dentro de um navegador web). • O que obtemos quando decidimos usar PHP: é uma linguagem livre (tanto de custo quanto no uso), independente de plataforma, popular e projetada para a programação na web. • Como é a aparência de programas PHP que exibem informações, processam formulários e conversam com um banco de dados. • Alguns aspectos básicos da estrutura dos programas PHP, como as tags de abertura e fechamento (<?php e ?>), o espaço em branco, a diferenciação entre maiúsculas e minúsculas e os comentários