Escolar Documentos
Profissional Documentos
Cultura Documentos
Novatec
CAPTULO 1
Apresentao do PHP
Este captulo e o seguinte tm como objetivos servir como reviso para aqueles que j conhecem PHP, e como guia inicial para aqueles que esto sendo apresentados linguagem pela primeira vez. Apesar de este livro abordar contedos avanados e no ter o propsito de ensinar princpios da linguagem, uma explanao bsica da mesma se faz necessrio. Se este for o seu caso, parabns pela deciso em aprender e aprofundar seus conhecimentos em uma das linguagens web que mais cresce em utilizao no mundo. Siga adiante por este captulo. Caso contrrio, se o leitor j tiver conhecimentos prvios, pode se sentir vontade para avanar nestes dois captulos iniciais e partir diretamente para o Captulo 3. Nas linhas a seguir entenda o porqu do PHP ter se tornado uma das linguagens mais utilizadas na web, e como ele vem sendo usado nos mais diferentes projetos de diversas magnitudes.
20
21
Verso 2 Em 1997, o PHP/FI 2.0, segunda verso da implementao C, obteve o apoio e reconhecimento de milhares de usurios ao redor do mundo. Aproximadamente 50.000 domnios reportavam sua instalao e uso, constituindo assim uma base de 1% dos domnios da internet. Enquanto isso, havia milhares de pessoas contribuindo com pequenos trechos de cdigos para o projeto. Apesar disto, ele foi apenas lanado ocialmente em Novembro de 1997, aps demandar a maior parte de sua vida em verses betas. Foi rapidamente substitudo pelas releases alfas do PHP 3.0.
Verso 3 Criada por Andi Gutmans e Zeev Suraski em 1997, o PHP 3.0 foi a primeira verso da linguagem que se assemelha ao PHP como conhecemos hoje. Esta verso foi totalmente reescrita, aps seus autores descobrirem que o PHP/FI 2.0 era uma linguagem verstil e que poderia ser utilizada para seus projetos acadmicos de comrcio eletrnico. Num esforo conjunto a partir da base de usurios PHP/FI j existente, Andi, Rasmus e Zeev decidiram se unir e anunciaram o PHP 3.0 como uma verso ocial e sucessora do PHP/FI 2.0, cujo desenvolvimento foi totalmente descontinuado. Nasceu assim o PHP 3.0, que alm de oferecer aos usurios nais uma infra-estrutura slida para diversos bancos de dados, protocolos e APIs, a extensibilidade apresentada pela verso atraiu dezenas de desenvolvedores que se juntaram com o propsito de submeter novos mdulos.
22
PHP Prossional
A possibilidade de ser extensvel foi, alis, a chave do tremendo sucesso do PHP 3.0. Outra caracterstica chave introduzida nesta verso foi o suporte sintaxe para Orientao a Objetos, ainda que bastante limitada. Para realar a reestruturao da linguagem, suas verses foram lanadas sob um novo nome, que removeu a impresso do limitado uso pessoal que o PHP/FI possua at ento. Seu nome foi nomeado simplesmente para PHP , com o signicado para o acrnimo PHP: Hypertext Preprocessor. No nal de 1998, o PHP contava com uma base de dezenas de milhares de usurios e centenas de milhares de pginas na internet relatando sua instalao. Em seu auge, o PHP 3.0 foi instalado em aproximadamente 10% dos servidores web da internet. Esta verso foi ocialmente lanada em Junho de 1998, depois de ter passado aproximadamente nove meses em testes pblicos. Verso 4 O desenvolvimento de aplicaes robustas apenas se tornou vivel por causa das novas caractersticas do PHP 3.0 e o suporte a uma variedade de banco de dados de terceiros e APIs. Entretanto, esta verso no foi projetada para trabalhar com aplicaes muito complexas de forma eciente. Uma nova engine, criada e lanada em meados de 1999, denominada Zend Engine (reduo dos nomes de Zeev e Andi), foi desenvolvida tendo como objetivo a melhoria dos pontos crticos apresentados at ento pela linguagem. O PHP verso 4.0, baseado nesta engine, e acompanhado de uma srie de novas caractersticas, foi ocialmente lanado em Maio de 2000, quase dois anos aps o seu predecessor. Alm da melhora do desempenho, o PHP 4.0 incluiu outras caractersticas chave, como o suporte para vrios servidores web, sesses HTTP, buffer de sada, maneiras mais seguras de manipulao de dados de entrada de usurios, dentre outras melhorias. Nesta verso tambm foi includo um dgito intermedirio para um controle mais granular de verso, a exemplo das verses 4.1.X da linguagem. At ento, em suas verses anteriores, era adotado apenas o padro 3.X. Na verso 4.1.0 apareceram as variveis superglobais $_GET e $_POST permitindo que a diretiva register_globals fosse desabilitada. A ltima alterao signicativa da verso foi apresentada na 4.3.0, que introduziu a interface de linha de comando CLI Command Line Interface. Verso 5 Verso que signicou uma quebra de paradigmas da linguagem, em que nalmente ela passa a suportar a Orientao a Objetos de forma consistente. Baseada na Zend Engine 2, essa verso foi lanada ocialmente em Julho de 2004. Tambm trouxe como novidades o suporte melhorado da manipulao de arquivos XML (via extenso SimpleXML), manipulao de webservices SOAP e REST, suporte melhorado ao MySQL via extenso
23
MySQLi, novas bibliotecas SQLite, Tidy e aperfeioamento com a integrao entre a linguagem Perl. Alm disso, melhorou o gerenciamento de memria e descontinuou o suporte ao sistema operacional Windows 95.
Verso 6 O futuro est em dar suporte ao Unicode para ajudar na interpretao de vrios caracteres, a m de facilitar o desenvolvimento e manuteno de sistemas globais e com suporte a multiidiomas. Alm disso, a nova verso ter caractersticas como: 1. O m das diretivas register_globals e da famlia magic_quotes_*. 2. Possvel remoo da diretiva safe_mode. 3. O lanamento de erro do tipo objetos. 4. Fim do suporte a Zend Engine I. 5. A descontinuidade ao suporte s variveis da famlia HTTP_*_VARS.
E_STRICT
Essas so algumas das futuras novidades que viro nesta nova verso, sendo que sua data de lanamento ainda no est denida. Outras alteraes durante o desenvolvimento do PHP 6 podero ser consultadas (em ingls) na ntegra no site http://php.net/~derick/meeting-notes.html.
1.3.1 Custo
O PHP no tem custo de licena justamente por ser um software livre. Isto signica que ele pode ser instalado em qualquer mquina, para qualquer nmero de usurios, sem que isto denote a violao de alguma lei de direito autoral. Seu modelo de licenciamento o da GPL General Public License (Licena Pblica Geral), largamente utilizado em softwares livres. Para maiores detalhes, consulte o site http://php.net/license. Seu suporte feito pelas comunidades que crescem dia a dia, tanto no Brasil quanto ao redor do mundo. Estas comunidades so uma das melhores maneiras de se obter suporte, trocar experincias e discutir idias sobre a linguagem. Ao nal do livro so fornecidos links de pginas da internet das principais comunidades em atividades em diversos pases.
24
PHP Prossional
Apesar de o PHP ser um software livre, a Zend, que empresa criada por Andi e Zeev, fornece ferramentas como IDE Integrated Development Environment (Ambiente Integrado de Desenvolvimento), servidores e outros produtos a m de facilitar o contato com a linguagem. Alm disso, ela tambm oferece a certicao ocial da linguagem, a Zend Certication. A Borland e sua subsidiria, denominada CodeGear, tambm possuem um IDE proprietrio, chamado Delphi para PHP . Para os programadores Delphi, essa ferramenta pode facilitar o desenvolvimento, j que seu IDE conta com componentes conhecidos destes programadores, como DBGrid, DBNavigator etc. Alm disso, o projeto Eclipse da IBM fornece um IDE para desenvolvimento totalmente gratuito, no mesmo estilo do IDE Eclipse para Java. Este ltimo, denominado Eclipse PDT (PHP Development Tools), em nada ca devendo aos melhores IDEs pagos do mercado.
ola.php
<html> <head>
<title> <title>
<?php ?>
</html>
</body>
Resultado:
Al Mundo. Seja bem-vindo ao PHP.
Quando um servidor solicita a pgina ola.php, o usurio ver impresso no navegador a mensagem mostrada anteriormente como resultado. Nada de impressionante at aqui: uma pgina HTML tradicional contendo uma mensagem. Se usurio visse o cdigo-fonte da pgina, o navegador mostraria algo como demonstrado na Figura1.1.
25
Aqui est a grande sacada! Por ser pr-interpretado no servidor como descrito no incio do captulo, o usurio s consegue ler as tags HTML e no o cdigo PHP em si.
Manipulao de arquivos como texto plano, do tipo PDF, documentos DOC, entre outros, incluindo sua criao, excluso, alterao etc. Gerao de imagens dinmicas para validao de formulrios. Criptograa de dados. Denio de cookies e sesses. Denio de interfaces para webservices. Manipulao de arquivos XML. Suporte a vrios bancos com acesso nativo como: DB2, Firebird, Informix, Interbase, MySQL, Oracle, PostgreSQL, SQL Server etc. Suporte a vrios padres e interfaces como: COM, CORBA, POP3, IMAP etc.
26
PHP Prossional
Alm das caractersticas citadas anteriormente (que tambm podem ser encontradas em outras linguagens), listamos a seguir alguns pontos que podem ajud-lo na escolha do PHP como sua plataforma de desenvolvimento:
Independncia de plataforma: roda em Windows, Linux, Unix, Mac etc. Suporte a Orientao a Objetos consistente na verso 5. Curva de aprendizado reduzida para quem est aprendendo a linguagem. Sintaxe semelhante com a de linguagens consagradas como C e Java. Integrao com vrios servidores web como Apache, IIS, Xitami, entre outros. Servidores de hospedagem tanto gratuitos como pagos em grande quantidade no Brasil e no mundo. Documentao ocial em portugus. Possibilidade do desenvolvimento tambm para desktop, usando a mesma linguagem. Hoje j possvel desenvolver com PHP em modo visual utilizando janelas a exemplo do Java, Delphi, C++, Visual Basic etc. Podemos criar aplicaes para trabalhar tanto em rede ou stand-alone independente do sistema operacional. Isso s foi possvel graas evoluo da linguagem e incluso da biblioteca GTK. Para conferir o que o PHP pode oferecer neste sentido, tome como ponto de partida a pgina http://gtk.php.net. Este endereo tambm conta com diversos exemplos disponveis.
Estes so alguns fatores adicionais que o PHP pode oferecer e que podem inuenciar sua deciso na adoo desta linguagem. Os fatos esto a e mostram que a linguagem amadureceu e est pronta para o seu prximo projeto. Quanto utilizao do PHP como plataforma de desenvolvimento, veja a Figura 1.2 auditada pela Netcraft, que mostra que mais de 19 milhes de domnios utilizam a linguagem. A Netcraft uma empresa inglesa que realiza monitorias e pesquisas de mercados relacionadas com a internet, incluindo sistemas operacionais, servidores web, entre outros. Seus relatrios e artigos, considerados benchmarks pelo mercado, so publicados em seu site http://netcraft.com com regularidade.
27
LAMP juno das iniciais de Linux, Apache, MySQL e PHP. WAMP juno das iniciais de Windows, Apache, MySQL e PHP.
28
PHP Prossional
Por serem constitudos a partir de diferentes aplicativos, todos eles independentes entre si, pode-se armar que estes ambientes so modulares por essncia. Tais componentes sero descritos detalhadamente mais adiante. Por ora destacamos a origem destes termos. Apesar de serem constitudos a partir da mesma base de aplicativos, no existe uma regra explcita para sua distribuio na mquina, como, por exemplo, uma estrutura de arquivos e diretrios padronizada, tampouco detalhes de suas conguraes internas. Na prtica, os termos LAMP e WAMP referem-se a modelos estruturais lgicos para o ambiente PHP. Isto quer dizer que duas mquinas que contenham cada uma seu prprio LAMP, por exemplo, no necessariamente tero as mesmas estruturas internas de arquivos e parametrizaes. No to comum como estes dois termos, um terceiro, chamado AMP (ou XAMP), tambm pode ser encontrado em sites da internet e livros: nada mais do que uma generalizao dos anteriores. Refere-se a um ambiente com o servidor web Apache, banco de dados MySQL, linguagem PHP, sem especicar seu sistema operacional. Como descrito, em se tratando de um ambiente com tais caractersticas, podemos tomar a liberdade de no explicitar este sistema, visto que na maior parte das aplicaes no haver diferenas na utilizao do ambiente, sendo ele baseado no Windows ou Linux. o que se chama de abstrao do sistema da mquina. importante ressaltar que os componentes do termo AMP so disponibilizados individualmente na internet e de forma gratuita, sem a necessidade da aquisio de licenas proprietrias de seus respectivos softwares. Isto quer dizer que seus componentes de base representam custo zero de compra e utilizao. Especicamente o LAMP, constitudo com base no sistema operacional Linux (tambm disponibilizado livremente na internet), forma um ambiente genuinamente livre de licenas proprietrias comerciais. Justamente por este e outros motivos que o ambiente mais freqentemente utilizado para a linguagem PHP, sendo tambm o adotado como padro para a elaborao dos exemplos prticos deste livro e recomendado aos leitores pelos seus autores. A escolha dos componentes AMP no devido unicamente a sua disponibilidade gratuita na internet. principalmente pelo fato de que todos estes itens j foram (e ainda so) constantemente testados a exausto, corrigidos e melhorados ao longo de suas existncias. Pode-se com certeza armar que eles so robustos, consistentes e j passaram e foram aprovados pelos mais diferentes testes de performance, em diversas conguraes de mquinas e de sistemas. Alm disso, so continuamente discutidos e aperfeioados por suas respectivas comunidades, desenvolvedores e programadores distribudos ao redor do mundo.
29
Mais adiante ser feita uma exposio completa sobre as diferentes formas de instalao e congurao deste ambiente. Ser adotada uma congurao de um ambiente bsico para o desenvolvimento do PHP, que ser utilizada para todos os exemplos e prticas descritas no decorrer do livro.
Sistema operacional Windows ou Linux Formam a camada de base dos demais aplicativos instalados na mquina. Em se tratando dos ambientes LAMP e WAMP, o mais comumente utilizado (inclusive neste livro) o primeiro deles, baseado no sistema Linux. Muitos fatores justicam esta escolha, entre eles: apresenta timos ndices de performances para este tipo de ambiente; pode ser congurado com grande exibilidade a partir de suas distribuies, de diversas maneiras distintas, de acordo com os requisitos da mquina e dos sistemas; possui uma vasta gama de comunidades que o apiam e o mantm; seguro; pode ser administrado remotamente; pode ser instalado com ou sem um ambiente grco (este ltimo no necessrio ao LAMP). disponibilizado na internet pela licena GNU GPL, em diversas distribuies ou sabores , entre eles: Red Hat, Debian, Suse Linux, Slackware, Ubuntu, Fedora etc. Servidor web Apache Desenvolvido pela Apache Software Foundation, um servidor web de cdigo aberto, disponibilizado livremente na internet. De acordo com a Netcraft, o servidor web Apache detinha no incio de 2007 um market share de aproximadamente 60% para o mercado de servidores web. Atualmente conta com verses para as principais plataformas existentes, entre elas o Linux e o Windows, sendo altamente recomendado para o primeiro sistema por questes de desempenho. Possui uma vasta gama de caractersticas, conguraes e ferramentas, entre elas: um poderoso sistema de registro de logs, alto nvel de segurana, na granularidade de congurao, implementao de hosts virtuais, suporte a SSL (Secure Sockets Layer), entre outros. Seu site ocial http://httpd.apache.org. MySQL Desenvolvido pela MySQL AB, um servidor de banco de dados de cdigo aberto, disponibilizado a partir de diferentes formas de licenas na internet, incluindo verses gratuitas. A mais recente delas, a 5.0, bastante robusta e possui as principais funcionalidades esperadas deste tipo de servio, incluindo: integridade referencial, stored procedures, triggers, views, suporte a campos BLOB (Binary Large Objects) etc. Seu site ocial http://mysql.org.
30
PHP Prossional
PHP uma das linguagens de scripts mais utilizadas para os ambientes de sistemas para a internet. Possui atualmente inmeras comunidades, grupos de discusses e entusiastas ao redor do mundo. Sua mais recente verso recebeu incremento de novas funcionalidades e suporte mais consistente ao paradigma da programao Orientada a Objetos, extenses para webservices, novas bibliotecas internas etc. Seu site ocial http://php.net.
O nico componente deste servidor que visvel ao mundo externo o servidor web Apache. ele quem escuta, trata de todas as requisies do tipo HTTP e HTTPS geradas pelos navegadores clientes e gerencia todo o seu processamento e resposta. Por ser teoricamente a nica porta de entrada aos sistemas externos, sua segurana torna-se fator crtico de ateno aos administradores de sistemas, visto que grande parte dos ataques de crackers visa justamente descobrir uma maneira de burlar este servio e obter acesso ao servidor. Caso a requisio recebida pelo Apache seja um arquivo do tipo HTML ou gura, ele consulta o seu sistema de arquivos e, se este estiver disponvel, retornado ao cliente. Por outro lado, se o tipo solicitado tiver uma extenso especial, que deva ser tratado por algum sistema externo ao Apache (como, por exemplo, arquivos do tipo
31
CGI (Common Gateway Interface), PHP, Perl, Python etc.), esta requisio delegada ao seu responsvel. Este ir efetuar o devido tratamento, como, por exemplo, realizar um clculo aritmtico, e retornar a resposta ao Apache. Este por sua vez, de posse da requisio processada pelo sistema externo, entregar a resposta ao navegador do cliente. Eventualmente este agente necessitar realizar consultas a uma base de dados relacional, razo pela qual na Figura 1.3 o sistema do PHP apresenta uma conexo com o banco de dados MySQL.
32
PHP Prossional
Ao invs de instalar e congurar cada um dos componentes envolvidos, estes pacotes oferecem ao usurio uma congurao bsica pr-montada. A desvantagem deste mtodo reside tambm justamente neste ponto: nem sempre o usurio poder alterar uma congurao com facilidade ou a atualizao individual de um componente nem sempre ser possvel. Neste caso, necessrio que os responsveis pelo projeto atualizem e disponibilizem uma nova verso de seu produto. Diversos exemplos de opes disponveis poderiam ser utilizados atualmente, tanto para plataformas Linux quanto Windows. A seguir, um breve comentrio sobre algumas delas:
XAMPP Interessante projeto AMP, que disponibiliza verses para mais de uma plataforma de seu pacote, entre elas: Windows, Linux, Mac OS X e Solaris. Possui uma srie de extenses pr-conguradas para o PHP e para o Apache. Contm atualmente o PHP 5.2, Apache 2.2, MySQL 5.0, SQLite, alm de uma srie de mdulos, extenses e aplicativos, como, por exemplo, para controle e gerenciamento do banco MySQL, o phpMyAdmin. Seu site ocial http://
apachefriends.org/en/xampp.html.
Vertrigo Verso disponvel apenas para Windows. Disponibiliza um ambiente completo e de fcil manuteno para o usurio. considerado um dos melhores pacotes para esta nalidade. Com um organizado painel de administrao, disponibiliza ao usurio ferramentas para congurao das principais diretivas do PHP, MySQL e Apache, atalhos para rpida visualizao e controle de seus arquivos de congurao, comandos de inicializao e encerramento de servios, entre outros. Contm atualmente o PHP 5.2, Apache 2.2, MySQL 5.0, alm de aplicativos de controle do banco MySQL, o phpMyAdmin e SQLite. Seu site ocial http://vertrigo.sourceforge.net. As guras 1.4 e 1.5 mostram algumas telas da ferramenta.
33
EasyPHP Outra opo disponvel para a plataforma Windows que tambm contm os principais aplicativos encontrados anteriormente. Seu site ocial http://easyphp.org.
34
PHP Prossional
oferece na pgina http://vmware.com/appliances algumas destas mquinas, chamadas Virtual Appliances, baseadas na plataforma Linux. Existe a possibilidade de baixar mquinas com ambientes LAMP completos, inclusive com aplicaes funcionais baseadas no PHP. Alguns exemplos so:
rPath LAMP Appliance oferece um ambiente enxuto , com o servidor web Apache, MySQL, PostgreSQL, PHP, Python, Perl, alm de uma interface web completa para administrao destes aplicativos. Disponvel em http://vmware. com/appliances/directory/465. Mambo Virtual Appliance ambiente web com o aplicativo Mambo Server CMS, escrito em PHP, voltado para gerenciamento de contedo de sites da internet. Disponvel em http://vmware.com/appliances/directory/520. SugarCRM Appliance ambiente web com o aplicativo SugarCRM, escrito em PHP, voltado para gesto comercial de clientes. Disponvel em http://vmware. com/appliances/directory/211. MediaWiki Appliance sistema Linux com distribuio Fedora 5, com o aplicativo MediaWiki, para gerenciamento colaborativo de contedo de sites da internet, entre eles a enciclopdia eletrnica Wikipdia. Disponvel em http://vmware. com/appliances/directory/180.
A desvantagem da tcnica de virtualizao com o uso de mquinas virtuais pr-montadas semelhante apresentada no item anterior. Nem sempre ser possvel atualizar ou modicar um de seus componentes de maneira individual. Geralmente estas atualizaes so feitas pelos respectivos responsveis por cada um destes projetos.
35
rusurio do sistema. Ao nal da operao, este ambiente LAMP contar com os seguintes componentes e verses: Apache 2.2.6, PHP 5.2.4 e MySQL 5.0.45. Tais verses so as mais recentes encontradas nos seus respectivos sites ociais no momento de escrita deste livro.