Académique Documents
Professionnel Documents
Culture Documents
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
Captulo 1
Apresentao do PHP
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 oficialmente 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 oficial e sucessora do PHP/FI 2.0, cujo desenvolvimento foi totalmente descontinuado. Nasceu assim o PHP 3.0, que alm de oferecer aos usurios finais 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 Profissional
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 , significado para o acrnimo PHP: Hypertext Preprocessor. No final 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 oficialmente 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 eficiente. 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 oficialmente 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 significativa da verso foi apresentada na 4.3.0, que introduziu a interface de linha de comando CLI Command Line Interface.
Verso 5 Verso que significou uma quebra de paradigmas da linguagem, em que finalmente ela passa a suportar a Orientao a Objetos de forma consistente. Baseada na Zend Engine 2, essa verso foi lanada oficialmente 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
Captulo 1
Apresentao do PHP
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 fim de facilitar o desenvolvimento e manuteno de sistemas globais e com suporte a multiidiomas. Alm disso, a nova verso ter caractersticas como: 1. O fim 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 definida. 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 significa 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 final do livro so fornecidos links de pginas da internet das principais comunidades em atividades em diversos pases.
24
PHP Profissional
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 fim de facilitar o contato com a linguagem. Alm disso, ela tambm oferece a certificao oficial da linguagem, a Zend Certification. 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 fica devendo aos melhores IDEs pagos do mercado.
ola.php
<html> <head>
<title> <title>
Testando o PHP
</head> <body>
<?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 Figura 1.1.
Captulo 1
Apresentao do PHP
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. Criptografia de dados. Definio de cookies e sesses. Definio 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 Profissional
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 oficial 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 influenciar 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.
Captulo 1
Apresentao do PHP
27
LAMP juno das iniciais de Linux, Apache, MySQL e PHP. WAMP juno das iniciais de Windows, Apache, MySQL e PHP.
28
PHP Profissional
Por serem constitudos a partir de diferentes aplicativos, todos eles independentes entre si, pode-se afirmar 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 configuraes 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 especificar 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. Especificamente 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 afirmar que eles so robustos, consistentes e j passaram e foram aprovados pelos mais diferentes testes de performance, em diversas configuraes de mquinas e de sistemas. Alm disso, so continuamente discutidos e aperfeioados por suas respectivas comunidades, desenvolvedores e programadores distribudos ao redor do mundo.
Captulo 1
Apresentao do PHP
29
Mais adiante ser feita uma exposio completa sobre as diferentes formas de instalao e configurao deste ambiente. Ser adotada uma configurao 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 justificam esta escolha, entre eles: apresenta timos ndices de performances para este tipo de ambiente; pode ser configurado com grande flexibilidade 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 grfico (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, configuraes e ferramentas, entre elas: um poderoso sistema de registro de logs, alto nvel de segurana, fina granularidade de configurao, implementao de hosts virtuais, suporte a SSL (Secure Sockets Layer), entre outros. Seu site oficial 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 oficial http://mysql.org.
30
PHP Profissional
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 oficial 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 figura, 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
Captulo 1
Apresentao do PHP
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 Profissional
Ao invs de instalar e configurar cada um dos componentes envolvidos, estes pacotes oferecem ao usurio uma configurao bsica pr-montada. A desvantagem deste mtodo reside tambm justamente neste ponto: nem sempre o usurio poder alterar uma configurao 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-configuradas 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 oficial 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 finalidade. Com um organizado painel de administrao, disponibiliza ao usurio ferramentas para configurao das principais diretivas do PHP, MySQL e Apache, atalhos para rpida visualizao e controle de seus arquivos de configurao, 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 oficial http://vertrigo.sourceforge.net. As figuras 1.4 e 1.5 mostram algumas telas da ferramenta.
Captulo 1
Apresentao do PHP
33
EasyPHP Outra opo disponvel para a plataforma Windows que tambm contm os principais aplicativos encontrados anteriormente. Seu site oficial http://easyphp.org.
34
PHP Profissional
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 modificar um de seus componentes de maneira individual. Geralmente estas atualizaes so feitas pelos respectivos responsveis por cada um destes projetos.
Captulo 1
Apresentao do PHP
35
rusurio do sistema. Ao final 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 oficiais no momento de escrita deste livro.