Criando Relatórios PHP

  • Published on
    20-Oct-2015

  • View
    24

  • Download
    3

Embed Size (px)

Transcript

  • PabloDallOglio

    ovatec

    CriandoRelatrios

    comPHP

  • 16

    CAPTULO1

    IntroduoaoPHP

    Persistirnaraivacomoapanharumpedaodecarvoquentecomainten-odeoatiraremalgum.semprequemlevantaapedraquesequeima.

    Buda

    Opresentecaptulorealizaumaintroduosobreasdiversasfunes,comandoseestruturasdecontrolebsicosdalinguagemPHP,quesopossivelmenteutilizadosaolongodolivro.Conheceremosasestruturasbsicasdalinguagem,suasvariveiseseusoperadoresetambmumconjuntodefunesparamanipulaodearquivos,dearrays,debancosdedados,dentreoutros.

    OqueoPHP?

    AlinguagemdeprogramaoPHP,cujalogomarcaapresentadanagura1.1,foicriadanooutonode1994porRasmusLerdorf.Noincioeraformadaporumcon-juntodescriptsvoltadoscriaodepginasdinmicasqueRasmusutilizavaparamonitoraroacessoaoseucurrculonainternet.medidaqueessaferramentafoicrescendoemfuncionalidades,RasmustevedeescreverumaimplementaoemC,quepermitiaqueaspessoasdesenvolvessemdeformamuitosimplessuasaplicaesparaweb.RasmusnomeouessaversodePHP/FI(PersonalHomePages/FormsInter-preter)edecidiudisponibilizarseucdigonawebem1995paracompartilh-locomoutraspessoas,bemcomoreceberajudaecorreodebugs.

    Figura1.1LogodoPHP.

    Emnovembrode1997,foilanadaasegundaversodoPHP.Nessemomento,apro-ximadamente50mildomnios,ou1%dainternet,utilizavamPHP.Nomesmoano,AndiGutmanseZeevSuraski,doisestudantesqueutilizavamPHPemumprojetoacadmicodecomrcioeletrnico,resolveramcooperarcomRasmusparaaprimoraroPHP.Paratal,reescreveremtodoocdigo,combasenoPHP/FI2,nascendoassimo

  • CriandoRelatrioscomPHP30

    Estruturasdecontrole

    IF

    Oumaestruturadecontrolequeintroduzumdesviocondicional,ouseja,umdesvionaexecuonaturaldoprograma.Casoacondiodadapelaexpressosejasatisfeita,entoseroexecutadasasinstruesdoblocodecomandos.Casoacon-dionosejasatisfeita,oblocodecomandossimplesmenteignorado.Ocomandopodeserlidocomo.

    :utilizadoparaindicarumnovoblocodecomandosdelimitadopor,casoacondiodonosejasatisfeita.Podeserlidocomocasocontrrio.Autilizaodoopcional.

    Nagura1.2,vejaumuxogramaexplicandoofuncionamentodocomando.Casoaavaliaodaexpressosejaverdadeira,oprogramaparteparaaexecuodeumblocodecomandos,casosejafalsa,parteparaaexecuodoblocodecomandosdadapelo.

    Figura1.2FluxodocomandoIF.

    Exemplo:

  • 51Captulo1IntroduoaoPHP

    Exemplo:

    Resultado:

    Manipulaodearrays

    AmanipulaodearraysnoPHP,semdvida,umdosrecursosmaispoderososdalinguagem.Oprogramadorqueassimilarbemessaparte,termuitomaispro-dutividadenoseudiaadia.IssoporqueosarraysnoPHPservemcomoverdadeiroscontineres, servindopara armazenarnmeros, strings, objetos, entreoutros, deformadinmica.Almdisso,oPHPnosofereceumagamaenormedefunesparamanipul-los,vistasaseguir.

    Criandoumarray

    Arrayssoacessadospormeiodeumaposio,comoumndicenumrico.Paracriarumarray,podemosutilizarafuno.

    ou

    Outraformadecriarumarraysimplesmentelheadicionandovalorespormeiodaseguintesintaxe:

    Dequalquer forma,paraacessaroarray indexado,basta indicar seu ndiceentrecolchetes:

  • 59

    CAPTULO2

    Objetosebancosdedados

    Pensaro trabalhomaisdifcilqueexiste.Talvezpor isso topoucos sedediquemaele.

    HenryFord

    Estecaptuloabordaraorientaoaobjetospormeiodeexemplosqueincluamconceitosbsicoscomoavisibilidade,aherana,entreoutrostpicosimportantesparaacontinuidadedaleituradolivro.Almdaorientaoaobjetos,estecaptuloexaminartambmotratamentodeexceeseoacessoabancosdedadosdemaneiraestruturadaetambmorientadaaobjetos,utilizandoabibliotecaPDO.

    OrientaoaObjetos

    Aorientaoaobjetosumparadigmadeprogramaoquerepresentaumalosoaparaconstruodesistemas.Nolugardemodelarestruturasdedadoseconstruirumsistemaformadoporumconjuntodeprocedimentos,comosefaziaemlingua-gensestruturadas(Cobol,C,Clipper,Pascal),naorientaoaobjetosmodelamoseconstrumososistemautilizandoobjetos,quesoentidadesquetmatributos,comportamento, relacionamentos eque representamumavisode sistemamaisprximadomundoreal.

    AorientaoaobjetosabordadacommaiorprofundidadenolivroPHPProgramandocomOrientaoaObjetos,domesmoautor,NovatecEditora.

    Introduo

    Aotrabalharmoscomaorientaoaobjetos,fundamentalentenderoconceitodeclasseseobjetos.Umaclasseumaestruturaestticaquedeneumtipodedados.Umaclassepodeconteratributos(variveis)etambmfunes(mtodos)paramani-pularessesatributos.Nesteexemplo,declaramosaclassecomquatroatributos.Osatributossovariveisqueexistemdentrodocontextodeumobjeto.Declaramosatributospormeiodapalavrachave,entreoutrasvistasmaisadiante.

  • 71Captulo2Objetosebancosdedados

    Herana

    Autilizaodaorientaoaobjetoseoencapsulamentodocdigoemclassesnosorientamemdireoaumamaiororganizao.Masumdosmaioresbenefciosqueencontramosnautilizaodesseparadigmaoreuso.Apossibilidadedereutilizarpartesdecdigojdenidasoquenosdmaioragilidadenodiaadia,almdeeliminaranecessidadedeeventuaisduplicaesoureescritasdecdigo.

    Quandofalamosemherana,aprimeiraimagemquenosaparecenamemriaadeumarvoregenealgicacomavs,pais,lhoseascaractersticas transmitidasgeraoapsgerao.Oquedevemos levaremconsideraosobreaheranaemorientaoaobjetosocompartilhamentodeatributosecomportamentosentreas classesdeumamesmahierarquia (rvore).As classes inferioresdahierarquiaautomaticamenteherdamtodasaspropriedadesemtodosdasclassessuperiores,chamadasdesuperclasses.

    Esserecursotemumaaplicabilidademuitogrande,vistoquerelativamentecomumtermosdecriarnovasfuncionalidadesemsoftware.Aoutilizarmosaherana,emvezdecriarmosumaestruturatotalmentenova(umaclasse),podemosreaproveitarumaestruturaexistente,quenosforneaumabaseabstrataparaodesenvolvimento,provendorecursosbsicosecomuns.

    J criamosa classe , agorapodemosaproveitar seu cdigopara criar classesmaisespeccascomoe,comonodiagramaapresentadonagura2.4.

    Figura2.4Heranadeclasses.

  • CriandoRelatrioscomPHP92

    PDOPHPDataObjects

    OPHP,emsuamaioria,umprojetovoluntriocujoscolaboradoresestodistri-budosgeogracamenteaoredordetodooplaneta.Comoresultado,oPHPevoluiucombaseemnecessidadesindividuaispararesolverproblemaspontuais,movidosporrazesdiversas.Porumlado,essascolaboraeszeramoPHPcrescerrapidamente,poroutro,geraramumafragmentaodasexensesdeacessobasededados,cadaqualcomsuaimplementaoparticular,nohavendorealconsistnciaentreasin-terfacesdelas(Oracle,MySQL,PostgreSQL,SqlServeretc.).

    Em razoda crescente adoodoPHP, tornou-senecessriounicaro acessosdiferentes extensesdebancosdedadospresentesnoPHP.Assim surgiuoPDO(PHPDataObjects)cujoobjetivoproverumaAPIlimpaeconsistente,unicandoamaioriadascaractersticaspresentesnasextensesdeacessoabancodedados.

    OPDOnoumabibliotecacompletaparaabstraodoacessobasededados,umavezquenofazaleituranematraduodasinstruesSQL,adaptando-asaosmaisdiversosdriversdebancosdedadosexistentes.Simplesmenteunicaachamadademtodos,delegando-osasuasextensescorrespondentes,efazusodoquehdemaisrecenteemtermosdeorientaoaobjetospresentenoPHP5.

    Paraconectarembancosdedadosdiferentes,anicamudananastringdeconexo.Vejaaseguiralgunsexemplosnosmaisdiversosbancosdedados.

    Banco StringdeConexo

    SQLite FireBird MySQL

    Postgres

    Parapodermosutilizar oPDO,devemos ter habilitadono as bibliotecas(drivers)deacessoaobancodedadosdenossaaplicao.NoLinux,habilitamosdaseguinteforma:

    JnoWindows,habilitamosdaseguinteforma:

  • 103

    CAPTULO3

    Bibliotecasutilizadas

    Apreguiaamedoprogresso.Seohomemnotivessepreguiadecami-nhar,noteriainventadoaroda.

    MarioQuintana

    Nestecaptulo,abordaremosasprincipaisbibliotecasutilizadasaolongodolivro.Oobjetivoinicialconhecerasbibliotecasesuasdiversascaractersticas,sem,noentanto,tratardiretamentedageraoderelatrios,queservistademaneiraseg-mentadanosprximoscaptulos.Dentreasbibliotecasutilizadas,veremosageraodearquivosnosformatosHTML,PDFeRTF,almdageraodegrcosgerenciais.

    GeraonoformatoHTML

    HTML(HyperTextMarkupLanguage)aprincipallinguagemparaformataodepginasweb.Propostaoriginalmentenoinciodosanosde1990porTimBerners-Lee,utilizadaparaproduzirdocumentosinterpretadospelosnavegadores.Alinguagempermitecriardocumentosestruturadospormeiodeumaestruturasemnticaconten-doelementoscomocabealhos,pargrafos,listas,links,imagens,entreoutrositens.Oselementossoformadosportagsoumarcadoresdelimitadospelossmbolose.

    Introduo

    Sevocprogramaemalgumalinguagemparawebhalgumtempo,deveterper-cebidooquantoaexibiodetagsHTMLdeixaocdigoconfusoepoucolegvelquandotemosdeconcatenarexpressesquemesclamcdigoHTMLevariveisdaaplicaoPHP.

    Aolongodestaseo,criaremosalgumasclassesvoltadasapresentaodeelementosHTML.OobjetivodessasclassessubstituirautilizaodastagspresentesnocdigoHTMLporclasseseseusmtodos,podendoconstruirumapginaHTMLpormeiodeobjetos,emquecadaumdelesrepresentarumelementogrco(texto,imagem,tabela),comonagura3.1,naqual temosumapequenapginacontendoalgunselementos,comoumpargrafo,umboto,umaimagem,umatabela,entreoutros.

  • 123Captulo3Bibliotecasutilizadas

    GeraonoformatoPDF

    Nestaseo,estudaremoscomogerardocumentosnoformatoPDFemPHP.PDF(PortableDocumentFormat)umformatodearquivoscriadopelaAdobeSystemsem1993, comoobjetivodepermitir a representaodedocumentosdemaneiraindependentedesofware,hardwareousistemaoperacional.UmdocumentoPDFcontmumadescriocompletadeumlayoutdedocumentoxo,queincluielementostextuais,fontes,imagensegrcos2D.Originalmenteproprietrio,oformatoPDFfoiocialmentepublicadocomoumpadroabertoem1998pelaISO(InternationalOrganizationforStandardization).Atualmentequalquerpessoapodeescreveraplicativosquemanipulamarquivosnesseformato.OformatoPDFsuportadopordiversosapli-cativoscomoAdobeReadereFoxitReaderemWindowseEvinceeKPDFemLinux.

  • CriandoRelatrioscomPHP138

    procuraexibirumagrandequantidadedetextopormeiodarepetiodastringtestemilvezes.Dessaforma,serocriadastrspginasdodocumento,contendoessastring,comocabealhoeosrodaps.Agura3.13apresentaoresultadodoprograma.

    Figura3.13ManipulaodecabealhoserodapsemPDF.

    fpdf5.php

  • 139Captulo3Bibliotecasutilizadas

    GeraonoformatoRTF

    Nestaseo,estudaremoscomoger