You are on page 1of 18
PHP com Programagao Orientada a Objetos POO em PHP 5.6 e PHP 7 Ligacao do PHP a bases de dados com PDO Com exemplos praticos e casos concretos Para iniciantes e programadores Ay | Epicho FCA Editora de Informatica, Lda, Av. Praia da Vitoria, 14 A - 1000-247 Lisboa Tel: +351 213511 448 fea@fcapt woww.fca.pt DistRIBUICAO Lidel - Edigdes Técnicas, Lda. Rua D. Estefénia, 183, R/C Dto. - 1049-057 Lisboa Tel: +351 213511 448 lidelatidel pt www.lidel pt Livranta ‘Av. Praia da Vitoria, 14 A — 1000-247 Lisboa Tel: +351 213511 448 * Fax: +351 213 522.684 livraria@lidel pt Copyright © 2016, FCA -Editora de Informatica, Lda, ISBN edicao impressa: 978-972-722-837-9 12 edigdo impressa; lho 2016 Impresso e acabamento: Tipografia Lousanense, Lda, ~ Lous’ Depésito Legal n.° 412483/16 Capa: José M. Ferrao ~ Look-Ahead wastaintrcercn-cctoadestemssc.utn- GY, alr” Dae Todos 0s nossos livros passam por um rigoroso controlo de qualidade, no entanto aconselhamos a consulta petiddica do nosso site (www.fca pt) para fazer 0 download de eventuais corresbes. [Nao nos responsabilizamos por desatualizacdes das hiperligagées presentes nesta obra, que foram verificadas & data de publicagéo da mesma. (Os nomes comerciais referenciados neste livro tém patente registada. Resend todoe oF diets. Esta publiagso nfo pode ser repro, nem transmits, no todo au em pate por qualquer proceso letrinico, mecsic,feocopia, digtalario, laacaa, sistema de amazenamento edsponblacao de infrracs0, Sito Web, biogue eu utes, sem previa atoracdo esta da Editor, eceto 0 permiid pelo CDADC em tras de copa prveda als AGECOP - Resociagho paras Geto da Cpa Prada, através do pagamento da repetvas te INDICE GERAL 1. InTRoDUGAO 1.1 Breve histéria do PHP 1.2 Vale a pena aprender PHP? 1.3 O que instalar: PHP 5 ou PHP 7? 1.4 O servidor Apach 1.5 Arquitetura cliente/servidor. 16 Recursos necessarios.... 1.7 Instalagao nativa em Mac OS X... 1,71 Instalagio do servidor Apache . 1.7.2 Linguagem PHP. 1.7.3 Servidor MySQL. 8 Instalagao do XAMPP . 1.8.1 Instalagao em plataformas WindOwS.....uns:snmnnnnnnane 1.8.2 Instalagdo em plataformas Mac OS X a 1.8.3 Instalagao em plataformas Linux 1.9 “Regras” de programagio ..... 1.911 Ficheiros, comentérios e resultados 1.9.2 Blocos de cédigo e indentacio .. 1.9.3 Tipos de dados. 1.9.4 Padronizacéo.. 1.9.5 Erros gerais. Resumo ... 2. Concerros Gerais 2.1 Introducao 2.2 Strings 2.2.1 Criagao e utilizacdo de strings 2.2.2 FungSes para strings. 2.3 Arrays 23.1 Criagio e utilizagio de array 2.3.2 Fungdes para arrays 2.4 Estruturas de controlo e decisao..... 2.4.1 FOR € WHILE. seen 2.4.2 IF, ELSBe ELSEIF 2.4.3 SWITCH/CASE .. 2.4.4 FOREACH... 2.4.5 CONTINUE e BREAK.. 2.5 Variiveis.... 2.6 Constantes. 2.7 Fungées criadas pelo utilizador 2.7.1 Criagao de fungao O FCA = Editora de Informatica VI PHP - com PROGRAMACAO ORIENTADA A OBJETOS. 2.8 Ficheiros e pastas .. Resumo ... ‘3. PROGRAMACAO ORIENTADA A OBJETOS 3.1 Introducao 3.2 Conceitos gerais 3.3 Classe.. 3.4 Objeto ... 35 Exemplo da relagao classejobjeto. 3.5.1 Criagao da classe. 3.5.2 Criagao do objeto 3.6 Heranga .... 3.7 Polimorfismo .... 3.8 Abstragio 3.8.1 Classes e métodos abstratos 3.8.2 Classes e métodos finais 3.9 Encapsulamento 3.9.1 PRIVATE.. 3.9.2 PROTECTED. 3.10 Associacdo, agregacio e composicio.. 3.10.1 Associagio .. 2 3.10.2 Agregaga0o..... 3.10.3 Composicao.... Resumo 4. DESIGN PATTERNS. 4.1 Introducd0... 4.2 Design patterns: 0 que sho? . 4.3 Utilizagio de padroes... 4.3.1 Padrao “fabrica” 4.3.2 Padro singleton (instancia tinica) 79 Resumo .... 5. Aurovoap, ERROS € EXCECOES 5.1 Funges para classes e objetos.. 5.2 Interfaces. 5.3 “Métodos magicos” 53.1 construct () e__destruct () 53.2__set() SBS GEE) cinaanscicnsii 534 __call() . 5.4__autoload() espl_autoload_register() .... 541 __autoload() sn . 5.4.2 spl_autoload_register().. 5.5 Eros . 5.5.1 Tipos de erros. 94 ‘© FCA - Editora de Informatica force Gera | Vil 5.5.2 Tratamento de erros B5.2L1 ALC () on 5.5.2.2 Flags 55.23 trigger_error() e set_error_handler() 5.6 Excecdes - 5.6.1 Criagdo de uma exceca svnnnnnnnnnnnnnnnnnn nnn 5.6.2 Ampliar a excecao 100 5.6.3 Exception OU PDOEXCEPE ION? swmmmnmnmnnnnnnnnnnnnnenn 103 Tb seAtccnincesecnnentsinnnisin 107 6. XML E MySQLu. 109 6.1 Introducao a0 XML. 109 6.2 Documento XML. M10 6.3 SimpleXML 12 6.3.1 Leitura do ficheiro XML... 12 6.3.2 Escrita no ficheiro XML. 115 6.4 XMLWriter .. 116 6.5 Bases de dados em PHP .. 118 6.5.1 Comunicagao entre bases de dados e PHP. 118 6.5.2 Base de dados clinica 19 6.6 mysqli. 120 6.6.1 Métodos e fungoe: 121 6.6.2 Classe mysqli .. cari incendie ADD 6.6.3 Ligacao a base de dados 123 6.7 Consulltas na base de dados com mysqli... 125 6:78 SHBG OS ROE ascreearcaarinncnanraamrant iB 6.7.2 Insergao de dados 128 6.7.3 Alteracao e eliminacdo de dados. 129 6.8 Prepared statements. sstecet SD. 68.1 Classe mysqli_stmt .... recreate 130 6.8.2 Consultas na base de dados com mysali_etmt revel BL 68.2.1 Selegio de dados .. i 131 6.8.2.2 Insercao de dados .. 134 6.8.23 Alteracao e eliminagao de dados 136 Resumo .... i 136 7. PHP Dara OBsects 137 7.1 Introducéo.... 2 canneries 1 137 7.2 Ligagao a base de dados.. 138 7.2.1 Ligagao com PDO 140 7.2.2 Erros e ligacdo com a exces try/catch 141 7.2.3 Métodos e funcoes... srs aisaaniainannecunerunsrntscseaTAD 7.2.4 Métodos bindParam() vs, bindValue ().. odd 7.2.5 Método fetch () oe 148, 7.3 Consultas na base de dado... ese 1B 73.1 Consultas de selegio com query () el @FCA- Editora de Informatica VIII PHP - com PROGRAMACAO ORIENTADA A OBJETOS wo 152, 7.3.2. Consultas de selecdo com prepared statements. 2 153 73.2.1 Método 1: consultas de selecio com placeholder "2" 7.3.2.2 Método 2: consultas de selecio com parametros nomeadbs ... 7.3.3 O problema do LIMIT 159 7.3.4 Consultas de insercao .... 7 162 7.3.5 Consultas de alteragao e eliminacao.... oe 164 Resumo 167 8. TRANSAGOES E STORED PROCEDURES .. 169 8.1 Transacoes.. 169 8.1.1 Conceito 170 8.1.2 Métodos e fungde: sins IL 8.1.3 Métodos COMMIT € ROLLBACK ones wo 172 8.1.3.1 Método 1: sem tratamento de erros, 174 8.1.3.2 Método 2: com tratamento de erros.. si 7 8.1.3.3 Método 3: utilizagao de fungies. 180 8.2 Stored procedures com PDO ... = 183 8.2.1 Preparacdo do stored procedure. 184 8.2.2 Utilizacao do stored procedure 184 Resumo .. 187 9. Create, Reap, Uppate AND DELETE. 189 9A Introd ug’0.nnnnnnnnnnnnnn cnet so 189 9.2 Layout 190 9.2.1 Bootstrap: instalaca 190 9.2.2 Bootstrap: utilizagao 191 9.3 Desenvolvimento do sistema CRUD .nmnnnnnnninnnnininnninnnininninnens oucst 9B 9.3.1 Ligacdo a base de dados... 9.3.2 Criagao da classe CRUD... 9.3.2.1 Acesso a base de dados 196 9.3.2.2 Fungo de inserc3o de dados: operacio Create 196 9.3.2.3 Funcao de leitura de dados: operacio Read . 197 9.3.2.4 Funcdo de atualizacao de dados: operacao Update ..... aivnaainassiadl DD 9.3.2.5 Funcao de eliminagao de dados: operagao Delete 200 9.3.2.6 Jungao de todas as operagdes 200 9.4 Desenvolvimento das paginas Web 203 9.4.1 Cabecalho e rodapé ... sion 208 9.4.1.1 Cabegalho cantante senennncennne 203 9.4.1.2 Rodapé 204 9.4.2 Pagina de entrada oe 204 9.4.3 Pagina de insergao de dados 206 9.4.4 Pagina de visualizagio de dad0S....smnsnnnnsinniinniinnnnnn seme 210 9.4.5 Pagina de atualizagao de dados.. Dit 9.4.6 Pagina de eliminagao de dados 215 Resumo an 218 ‘© FCA - Editora de Informatica force Gera | 1X 10. PHP 7... 10.1 Introdugio..... scacusienaraianeciT ssransisscrsssan 219 10.2 Instalago do PHP 7... 220 10.3 Funcionalidades descontinuadas 221 10.3.1 ereg() . i 103.2 SWITCH/DEFAULT 223 10.33mysql() 7 222 10.4 Operadores e fungbee.. 224 224 10.4.1 Operadores... 10.4.2 Fungées.. 10.5 Erros. 10.6 Classes anénimas Resumo .. GLossArro DE TerMos ~ Portuaués Europeu / PorTuGués Do BRASIL ... noice Remassivo .. @FCA- Editora de Informatica INTRODUCGAO Neste capitulo pretende-se dar a conhecer o que é © PHP, quais os paradigmas de progra- mago possiveis com esta linguagem e como instalé-la. Além disso, serio dadas algumas nogies gerais sobre a Programacao Orientada a Objetos (POO) que sao transversais a varias linguagens de programagao, seja para ambiente Web ou nao. 1.1 BREVE HISTORIA DO PHP A linguagem PHP (Hypertext Preprocessor), atualmente na versio PHP 7, surgiu em 1994 pela mao de Rasmus Lerdorf, com a designacao inicial de Personal Home Page Tools Posteriormente foi desenvolvida a versio PHP 3 e, mais tarde, surge a versio PHP 4, a qual ja inclufa recursos que permitiam a programagio orientada a objetos. Em junho de 2004 é apresentada a versio PHP 5, mas a ultima versao estavel é a 5.6, pese embora jé exista a versio 7, que vird mudar alguns dos habitos de programacao por objetos que conhecemos atualmente para esta linguagem. Quanto a versao 6, no chegou (nem chegara) a ser lancada como uma verdadeira versio do PHP, pois tinha como objetivo colmatar a falha apontada as versdes 5.2 e anteriores de no terem suporte nativo para Unicode. Assim, em 2005 chegou a ser constituido um grupo de trabalho para desenvolver uma versao (PHP 6) que tivesse esse suporte, mas em 2009 foi lancada a versio 5.3 com algumas funcionalidades previstas para © PHP 6, s6 que mantendo-se sem o suporte Unicode, Em resultado disso, os recursos que supostamente seriam incorporados na versio PHP 6 foram sendo integrados a partir das versdes 5.3 ¢ 5.4, razio pela qual o PHP 6 deixou de fazer sentido como uma versio principal. Contudo, este assunto nao foi pacifico e chegou a ser uma matéria discutida entre os programadores, desde 2014, com vista a saber se a versao posterior 4 5.x deveria ser designada por “PHP 6” ou “PHP 7”!, acabando por se adotar a tiltima No que toca 4 versio PHP 7, esta foi lancada em definitivo no final de 2015, razao pela qual sero incluidas neste livro as devidas referéncias a esta versio, sempre que tal nos pareca adequado e se justifique. Apesar da introdugdo desta versio, é expectivel que + As opinides e a discussio em toro do nome da versio de PHP que deveria ser adotado encontram-se online em wi cl ote, © FCA = Editora de Informatica 2 PHP - CoM PROGRAMACAO ORIENTADA A OBJETOS demore algum tempo até que a mesma seja usada em pleno, na medida em que ha um perfodo de adaptacao, quer de maquinas quer de programadores, que tem de ser tido em conta. Contudo, na parte final do livro dedicaremos um capitulo a esta nova versao, uma vez que 0s contetidos apresentados ao longo do resto da obra lhe podem ser aplicados. 1.2. VALE A PENA APRENDER PHP? A resposta a esta pergunta, considerando que este ¢ um livro sobre PHP, acaba por ser 6bvia. Contudo, se esquecermos o facto de estarmos a falar de um livro sobre PHP, a resposta &, sem diivida, sim! Isto porque, apesar de toda a discussdo em torno de qual o nome que deve ser adotado na proxima versdo de PHP, se é uma linguagem tipada ou se ¢ a melhor linguagem para desenvolvimento Web, 0 certo é que esta linguagem se tem mantido ao longo do tempo como uma poderosa linguagem de programagio. Isto sobretudo para a construgdo de paginas Web ou aplicages que se pretende que sejam usadas em ambientes Intranet, representando atualmente a linguagem utilizada em cerca de 80% dos sites conhecidos, com uma larga vantagem sobre linguagens mais “maduras” como o ASPX ou até linguagens mais modernas e mais em voga, como o Ruby on Rails ou o Python (https://w3techs.comytechnologies/overview/programming language/all). A seu favor ~ ¢ tal como outras linguagens existentes -, a linguagem PHP permite, de modo rapido e fiavel, a construcao de paginas Web, sendo cada vez maior a quantidade de bibliotecas que esto disponiveis, seja para o desenvolvimento orientado a objetos, seja para programacao MVC (Model View Controller), o que permite aos programadores a criagao de todo o tipo de paginas, além da reutilizacio do cédigo desenvolvido, entre outras funcionalidades. Sendo uma linguagem robusta e bastante completa, é ainda possivel incorporar variadissimas fungdes que vao desde o trabalho de bases de dados, pasando pela apresentagao de gréficos, exportagdo de ficheiros nos formatos PDF ou XLSX (0 chamado formato “Excel”), entre outros. Além disso, é uma linguagem desenvolvida por uma comunidade bastante alargada, o que permite a qualquer utilizador (desde o simples amador ao profissional) encontrar respostas para as suas diividas em sites, féruns ou até revistas dedicadas a esta linguagem de programagao. Existe ainda a possibilidade de desenvolver aplicagdes com aspeto semelhante as que se desenvolvem em CH/C, utilizando a extensio PHP-GTK, mas cujo tratamento nao sera abordado neste livro. No entanto, realgamos que o capitulo da seguranga tem sido cada vez mais trabalhado e aprimorado, além do tratamento de erros e bugs que vao sendo detetados. Apenas a titulo de curiosidade, refira-se que, atualmente, até 0 SQL Server da Microsoft jA permite a integraco com o PHP, apesar de esta empresa possuir a sua prépria linguagem para ambiente Web (ASP/ASPX), o que demonstra a importancia do PHP nos dias de hoje ao nivel da programagio para a Internet e do seu suporte pelos diferentes servidores Web. ‘© FCA - Editora de Informatica XML E MySQLI Apés termos percorrido as bases necessirias para a compreensio, criacio e manipulacio de classes e objetos, voltamo-nos agora para a manipulagao de dados. Assim, veremos como se pode utilizar o PHP para manipular ficheiros XML e bases de dados, usando 0 paradigma de POO através do mysqli. 6.1 INTRODUGAO AO XML A linguagem XML (eXtended Markup Language) foi sendo progressivamente intro- duzida sobretudo a partir da década de 90 do século passado e é, atualmente, uma das linguagens que permite a criagio de documentos com bastante flexibilidade ao nivel da manipulagao de dados, uma vez que nao é dependente do software ou hardware utilizados. © XML tem como vantagens a simplicidade de criacdo e escrita, a criagdo de fags que nao limitam 0 formato ou o texto, a organizacao de dados de forma hierarquica ou como suporte Unicode, podendo ser criado ou editado em qualquer editor de texto comum. Em Portugal, podemos encontrar ficheiros em formato XML para diversos fins, sendo um deles o que é usado pelos Standard Audit File for Tax Purposes (SAF-T) para exportacao de dados contabilisticos que, posteriormente, so fornecidos a Autoridade Tributaria e Aduaneira (AT). istemas que possuem a implementaco da norma O PHP possui varias bibliotecas que permitem a utilizagio e manipulagdo de documentos em formato XML, das quais se salientam as bibliotecas Document Object Model (DOM), libXML ou SimpleXML, entre outras', sendo possivel deste modo utilizar documentos originados com XML e integré-los usando a POO em PHP. Se o objetivo for trabalhar com dados em XML devolvidos sob a forma de array, deveremos utilizar a biblioteca SimpleXML. Esta é uma das bibliotecas disponibilizadas nativamente pelo PHP e que permite a utilizagio de XML com PHP orientado a objetos, estando automaticamente ativa a partir 1 A lista completa esti disponivel no enderego hitps//secure php nel/manual/pt BR/refs xml php, ‘Também pode encontrar referéncias em ‘ pols cos si i © FCA = Editora de Informatica 110 PHP - com PROGRAMACAO ORIENTADA A OBJETOS da versio PHP 5.1.2. Mas se 0 objetivo fosse trabalhar com tabelas, poderiamos utilizar a biblioteca XSL; e se fosse para transformar o contetido de uma base de dados MySQL em contetido XML, poderiamos fazer uso da biblioteca XMLWriter. Deste modo, e para nao tornar exaustiva a descricao dos varios procedimentos, neste capitulo faremos uma breve abordagem deste processo para o caso dos dados obtidos sob a forma de arrays com o SimpleXML e também com o XMLWriter, percorrendo algumas das fungées existentes para cada uma destas bibliotecas. 6.2 DOCUMENTO XML Para melhor se compreender 0 funcionamento do PHP aplicado ao XML, é conveniente ter uma nogao basica sobre a estrutura e formatagdo de um documento XML, na medida em que depois se perceber4 melhor a interligacao entre os dois formatos. Assim, o documento XML tem como grande vantagem o facto de estar organizado por tags personalizadas que permitem estruturar 0 contetido, de forma similiar as tags utilizadas em linguagem HTML. Para se elaborar um documento XML, deve atender-se aos seguintes requisitos essenciais: © Atributos — devem ser colocados dentro das tags para fornecer informacies, mas nao sdo fundamentais para 0 documento, uma vez que nao fazem parte dos dados. Por exemplo, os que se colocam a seguir 4 tag para indicar algo, como no caso assinalado a negrito na seguinte linha de cédigo: ; © Entidades — sao unidades de informacao e devem ser identificadas pelo seu nome. Quanto aos atributos, devem ser evitados acentos ou aspas simples, facultativos pois apenas servem para tornar mais claro 0 que se vai descrever no documento XML. Caso seja necessario escrever bastante texto numa entidade, pode recorrer-se ao comando DATA, ow seja, Character Data, através da instrugdo . Outros requisitos a ter em conta sio: © Utilizagao de fags — para identificar o contetido, sendo as tags case sensitive e feitas de forma idéntica 4 do HTML; © Estrutura em drvore — os elementos relacionam-se de acordo com o seu parentesco; © Codificagéo — na primeira linha deve sempre ser identificada a versio do XML em uso e a codificagao utilizada, ‘© FCA - Editora de Informatica XML MySQL | 111 Deste modo, verificam-se bastantes semelhancas com a linguagem HTML, em que também hd uma estrutura em arvore e a indicacao da codificagao usada, entrando aqui a questao da extensabilidade com o facto de as préprias tags permitirem autodocumentar a linguagem e os itens que vao sendo criados. Para melhor se compreender este conceito, imagine-se que queremos descrever um conjunto de instrugdes em XML que correspondam a tarefa de passar a ferro varias pegas de roupa. Para tal, poderiamos criar um documento com essas_instrucées, indicando-se entre tags os utensilios necessarios, a roupa e cada passo da tarefa, como se mostra no seguinte exemplo: ferro de engomar 4gua de rosas camisas calcas Regular a temperatura do ferro de passar. Colocar a primeira peca de roupa na tébua, bem esticada. Passar a ferro com cuidado para evitar vincos. Repetir as duas etapas anteriores para cada peca de roupa. Desligar o ferro de passar da tomada. Como podemos constatar, este conjunto de tags descreve todo 0 processo, ao mesmo tempo que mostra os dados que sao colocados entre as mesmas, formando o documento XML, 0 que também evidencia a portabilidade deste documento. Se o ficheiro fosse executado num qualquer browser, o resultado apresentado seria precisamente 0 do contetido do ficheiro, tal como se evidencia na Figura 6.1. © FCA = Editora de Informatica 112) PHP - com PROGRAMACAO ORIENTADA A OBJETOS ©.2 © /Gucaroupanepminon. x € > © 1} lecahosexamop/PHPOOMIerojexerlo.rt “This XML fle does not appear to have any style information associated with it Tre document re is shown below. Ficura 6.1 ~ Ficheiro XML executado no browser, 6.3 SIMPLEXML Como jé se referiu, e caso se pretenda trabalhar com dados sob a forma de array, podemos fazer uso do SimpleXML. Esta biblioteca trabalha essencialmente com trés funges, sendo que em todas elas, caso nao seja possivel receber os elementos em XML, é retornada a indicagao FALSE para alertar 0 utilizador. Estas fungdes sao as seguintes: @ —simplexm1_import_dom — recebe um objeto usando a classe SimplexMLElement vindo de um DOM; © simplexml_load_file — recebe e lé 0 arquivo XML, transformando-o num objeto do tipo SimplexiElement; © simplexm1_load_string ~ recebe e lé uma sfring XML e transforma-a num objeto. 6.3.1 LEITURA DO FICHEIRO XML Suponhamos, entao, que temos um documento em formato XML com a estrutura que se apresenta abaixo: ‘© FCA - Editora de Informatica PHP 7 Neste capitulo pretende-se dar a conhecer 0 PHP 7, bem como algumas das novidades trazidas por esta versio, além de informagies sobre como instalé-la. Sera também abordada a situagdo das funcées descontinuadas e as alteragdes introduzidas no que diz respeito ao tratamento de erros, em contraponto ao que vimos no Capitulo 5. 10.1 INTRODUGAO O PHP 7 foi definitivamente lancado em outubro de 2015, estando ainda numa fase de entrada em muitos dos sistemas atuais, na medida em que existe sempre um hiato de tempo entre a saida de uma versio e o seu uso consolidado nos servidores. Nao obstante esta realidade, o PHP 7 vird para ficar, mas podera obrigar & atualizagao do cédigo escrito que nao tenha seguido 0 paradigma de POO, uma vez que deixara de haver suporte definitivo para muitas opgdes de cddigo existentes nas versdes 5.x, como é © caso do acesso ao MySQL sem a utilizagao de objetos. Quanto as verses PHP 5.5 e PHP 5.6 em concreto, a primeira ja perdeu o suporte, a0 passo que est previsto que a segunda deixe de ter suporte ativo até finais de 2016 e de ter suporte de seguranga até finais de 2018. Ora, isto significa que mesmo as atualizagdes possiveis para a versio 5.6 serio reduzidas, embora nao queira dizer que ambas as versGes nao possam estar instaladas e continuar a desempenhar o seu trabalho de modo normal. Contudo, é recomendavel fazer o upgrade para a nova versao do PHP, ainda que © caminho de migracdo possa ser relativamente suave se a programagio inerente as aplicagées ja tiver aplicado o paradigma de orientagao a objetos. Assim, este capitulo vai abordar a instalagao do PHP 7 e algumas das suas novidades (e diferengas), ainda que de uma forma resumida, pois algumas mudangas foram bastante subtis. No entanto, tal nao devera representar obstaculo 4 migrago para a nova versio, visto que 0 eédigo elaborado segundo o paradigma de orientacao a objetos pode (e deve!) ser perfeitamente utilizado nesta nova versio e sem qualquer transtorno, como é 0 caso dos exemplos que fomos apresentando ao longo deste livro. Deste modo, dedicaremos as préximas paginas ao PHP 7, na medida em que esta sera a linguagem PHP do futuro! © FCA = Editora de Informatica 220 _ PHP - COM PROGRAMACAO ORIENTADA A OBJETOS 10.2 INSTALACAO DO PHP 7 Relativamente ao PHP 7, comecam a ser disponibilizados pacotes de instalacio compostos, como é o caso do XAMPP, em que ja esta disponivel uma versio que 0 inclui (no endereco https//www apachefriends org/pt br/index,html). Por conseguinte, aplicam-se 0s processos de instalagdo indicados no Capitulo 1, desde que se tenha descarregado 0 pacote de ficheiros correspondente a cada sistema operativo e se pretenda fazer uma instalacao “limpa”, ou seja, sem ter uma versio prévia instalada. No entanto, caso tenha uma versio do XAMPP instalada, é possivel fazer a atualizagao para a nova versio, devendo realizar uma cépia de seguranga de tudo o que possua (para evitar perda dos trabalhos j4 desenvolvidos), bem como das bases de dados instaladas, recomendando-se que depois faga a desinstalacao da versio anterior (no caso de ser uma instalacao “limpa’). Contudo, se pretender correr 0 PHP 7 em paralelo com o PHP 5.x que estiver instalado, podera fazé-lo de dois modos distintos: ou instalando 0 XAMPP com PHP 7 numa pasta diferente daquela onde tem instalado o XAMPP com PHP 5.x, ou fazendo a instalac3o manual e a respetiva configuracio. Assim, caso queira efetuar todo o processo manualmente, devera aceder ao enderego http://php.net/downloads.php e descarregar a ultima versio do PHP 7. Em seguida, e se tencionar manter a versao que tem instalada, deverd criar uma nova pasta (por exemplo, “PHP7”), que poder colocar na localizacao atual do XAMPP paralelamente & pasta que contém a versio em uso do PHP. Apés este passo, resta indicar a localizacdo da nova pasta para que o XAMPP assuma o PHP 7, 0 que ¢ feito alterando 0 ficheiro ht tpd-xampp .con£ que se encontra na pasta dos ficheiros do XAMPP, usando os enderecos /xAMPP/xamppfiles/etc/extra/ (para Mac OS X e Linux) ou /xaMpP/apache/con£/extra/ (na versio Windows). Em seguida, devera modificar a linha de cédigo que contém a indicagio do diretério em uso para o diretério que pretende usar com 0 PHP 7, ou seja, mudar as seguintes linhas de eédigo: LoadFile 1ocalizagao_do_XAMPP/php1/php7ts.d11 LoadFile localizagao_do_XAMPP/php7/1libpq.dl1 LoadModule php7_module localiza¢&o_do_XAMPP/php7/php7apache2_4.d11 Por tiltimo, nao se esqueca de mudar a localizago do ficheiro php. ini, adicio- nando as seguintes instrugdes: PHPINIDir "localizagdo_do_XAMPP/php7* ‘© FCA - Editora de Informatica PHP 7 221 Sempre que pretender voltar a usar a versio anterior, bastard anular os passos anteriores e reverter a localizacao dos ficheiros. Outra alternativa bastante interessante é a utilizagdo do pacote MAMP ~ que se refere ao conjunto de programas direcionados ao Mac OS, incluindo o servidor Apache, 0 SGBD MySQL e as linguagens de programacao PHP, Perl e Python -, que pode ser obtido no enderego https://www.mamp.info/en/downloads/, Atualmente, 0 MAMP ja permite escolher se se pretende utilizar o PHP 5.6 ou 0 PHP 7, sem necessidade de qualquer mudanga na configuracao, e de forma muito rapida, através do menu que ¢ instalado com a aplicagao. Além disso, disponibiliza uma versao para Windows, pelo que poder ter instaladas as duas versdes do PHP de modo muito mais facil e rapido. Alerta-se, no entanto, para duas situagdes que podem ocorrer: a primeira tem a ver com os portos usados através do endereco do localhost, que sdo 0 8888 ou 0 8889 — por predefi relacionada com a questao de os erros nao aparecerem no browser, uma vez que s6 esto definidos para serem registados no ficheiro de logs. Jo -, podendo ser alterados para o 80, caso se pretenda; a segunda situagao est Para resolver a primeira ocorréncia, aceda ao menu onde se inicia o servidor, clique no separador “Preferences” e depois em “Ports” para poder alterar os portos a utilizar. JA quanto 4 segunda, deverd aceder ao ficheiro php.ini que se encontra na pasta AQMP /bin/php/PEP7.0.0/con£ e proceder a alteragdo da linha display_errors = off para display_errors = on, podendo manter ou desativar o ficheiro de logs dos erros ¢ mudandoa linha log_errors = on deste ficheiro. Por uma questo de demonstragao e facilidade, utilizaremos 0 MAMP para as operacées deste capitulo realizadas com o PHP 7. 10.3 FUNCIONALIDADES DESCONTINUADAS Quando se instala uma nova versao do PHP, corre-se o risco de algumas das funcionalidades que tinhamos usado deixarem de ter suporte, sendo que tal é assinalado de cada vez que executamos 0 eddigo PHP através da expresso deprecated, devido & ocorréncia de um erro do tipo &_DEPRECATED, Em portugués, isso significa que as funcionalidades foram descontinuadas ou desencorajadas na sua utilizagao, tornando-se obsoletas. Contudo, algumas foram mantidas e nao totalmente removidas, enquanto outras foram substituidas por novas funcionalidades e outras ainda que deixaram mesmo de ter suporte e ja néo podem ser utilizadas de futuro. Com o PHP 7 estes acontecimentos nao sao exce¢ao e, por isso, daremos énfase as funcionalidades que nos parecem ser as mais importantes e que poderdo ter maior impacto nas aplicacdes existentes que tenham sido criadas com verses anteriores. © FCA = Editora de Informatica 222 _ PHP - COM PROGRAMACAO ORIENTADA A OBJETOS Um desses exemplos foi o que referimos na seccao 1.9.1, quanto a utilizagéo de fags em PHP que nao correspondessem ao formato para, respetivamente, iniciar e terminar 0 cédigo. Em seguida, veremos entao outras alteracdes importantes que a nova versio introduz. Caso pretenda consultar a lista completa das alteragdes que ocorreram no PHP 7 para quem vai migrar a partir da versao 5.6, devera aceder ao enderego de referéncia em httpy/php.net/manual/pt_ BR/migration70.php. 10.3.1 EREG() Com o PHP 7 hd um conjunto de expressdes do tipo Portable Operating System Interface (POSIX) que deixa de estar disponivel, uma vez que as extensdes ereg() foram sendo depreciadas no PHP 5.3 € nas versdes seguintes, tendo sido totalmente removidas no PHP 7. Estas fungées permitiram verificar, entre outros aspetos, se um enderego de correio estava corretamente definido, mas foram sendo descontinuadas e atualmente ja nao esto disponiveis. Além das extensdes referidas, deixaram também de estar disponiveis as extensdes ereg_replace(), eregi_replace(), split(), splitti() esql_regcase(). Para ultrapassar esta limitacao, devem ser agora utilizadas as extensdes do tipo preg_, uma vez que a compatibilidade é assegurada através das expressdes do tipo Perl Compatible Regular Expressions (PCRE), destacando-se sobretudo a fungio preg_match() para comparacao de expresses. Todavia, ha que referir que é agora necessdrio 0 uso de delimitadores do tipo “/”, antes e depois da expressiio a comparar, bem como do modifi- cador “i”. Por exemplo, para verificar se o endereco de correio eletrénico esté corretamente inserido, poderemos criar uma funcao que proceda a tal, usando a extensao preg_match (), como se apresenta a seguir:

You might also like