89
PHP e Sistemas de Informação Web João Paulo Ribeiro jpribeiro.com

PHP e Sistemas de Informação Web

  • Upload
    pooky

  • View
    23

  • Download
    0

Embed Size (px)

DESCRIPTION

PHP e Sistemas de Informação Web. João Paulo Ribeiro jpribeiro.com. Hello world!. João Paulo Ribeiro. Graduando (Concluinte) de Ciência da Computação – UFCG Pesquisador no Laboratório de Sistemas de Informação 10 anos de experiência em desenvolvimento para Web - PowerPoint PPT Presentation

Citation preview

PHP e Sistemas de Informao WEB

PHP e Sistemas de Informao WebJoo Paulo Ribeirojpribeiro.comHello world!

Joo Paulo RibeiroGraduando (Concluinte) de Cincia da Computao UFCG

Pesquisador no Laboratrio de Sistemas de Informao

10 anos de experincia em desenvolvimento para Web

Jpribeiro.com / [email protected] (2002)

1 site de escola da cidade a disponibilizar o boletim onlineCesrei (2006)Sistema de controle acadmico

O Que ?Linguagem de programao (srio?)Focada na webInicialmente, PHP = Personal Home Page (Pssimo)

Depois, PHP: PHP Hypertext Processor(Recursivo, e bemmelhor)

Histrico1994: Pginas HTML estticas

HistricoRasmus Lerdorf criou o core de PHP (em C) com uma srie de utilitrios para dinamizar/monitorar o contedo de seu prprio site

Comunidade do software livre interessou-se e contribuiu para a criao do PHP/FI (Personal Home Page / Forms Interpreter)HistricoEm 1998, foi lanado o PHP 3, primeiro que se assemelha com o atual (PHP/FI, em sua verso 2, foi descontinuado)Infraestrutura slida para diferentes bancos de dados, protocolos e APIsPHP 4 lanado em 2000, com nova Zend EngineZend = Zeev Suraski + Andi GutmansMelhoria de performance nos servidoresPHP 5 (verso atual) lanado em 2004Orientao a objetosPor que aprenderPHP uma das linguagens mais utilizadas do mundoFigura no top 10 do TIOBE index (www.tiobe.com) h 10 anosAtualmente (Abril 2012), est na 6 posio, atrs dos Cs (C, C++, Objective-C e C#) e Java

Por que aprenderPHP uma das linguagens mais utilizadas do mundoPHP usado em 77,6% dos sites na internet, de acordo com os dados da W3Techs (http://w3techs.com) sendo a linguagem server-side mais utilizada

Por que aprenderTem muita vaga de trabalhoDados do site Indeed.com, linguagens server-side (EUA)

Por que aprenderTem muita vaga de trabalhoDados do site JobsTractor (jobstractor.com), com as vagas anunciadas via Twitter (16.855 vagas anunciadas em maro de 2012)

Quem usa PHP?Quem usa

Quem usa

Quem usa

Quem usa

Terceiro maior motor de busca do mundo, principal da China (ultrapassando Google e Yahoo)Quem usa

Quem usa

Quem usa

Apresentao durante a Semana Acadmica de Computao :-)CaractersticasLinguagem de scriptsCdigo pode ser mesclado em meio a HTML

Caractersticas

Pgina HTML resultante

Cdigo-fonte do HTML resultanteCaractersticasLinguagem interpretadaCdigo no compilado - interpretado a cada execuo

Roda em servidorServidor executa o interpretador PHP

Apache HTTP Server: Servidor web mais popular do mundo (mais de 100 milhes de sites WOW)Verses para muitos diferentes SOOpen-sourceCaractersticas

Processador de hipertexto server-sideCaractersticasMultiplataformaInterpretadores para as mais diferentes plataformasUnix, Linux, Windows, OS X, Risc, Netware, Solaris........Disponibilizado o cdigo-fonte no site oficial (php.net)Write once, run everywhere

Open-source!

Programao procedural, orientada a objetos, ou hbrida CaractersticasPHP tambm pode ser utilizado em outras formas:CLI: Command Line InterfacePHP-GTK: Extenso para escrever aplicaes desktop com interface grficaSegundo a documentao oficial: PHP is probably not the very best language to create a desktop application with a graphical user interfaceCaractersticasOutputHTMLImagens (Extenso GD): GIF, PNG, JPEG, WBMP, XPMPDF (Extenso PDFlib)Flash (Extenso libswf)XML, XHTML (Extenso libxml)...

Existem muitas (muitas) extenses na internet:PECL (PHP Extension Community Library): 280 pacotesPEAR (PHP Extension and Application Repository): 586 pacotesCaractersticasUm dos pontos mais fortes de PHP sua integrao incrivelmente simples com bancos de dados

Camadas de abstrao:DBA: Database Abstraction LayerdbX: Abstrao de algum BD especfico (X)ODBC: Open Data Base ConnectivityAdabas D, IBM DB2, iODBC, Solid, Sybase SQL AnywherePDO: PHP Data ObjectsCaractersticasExtenses de SGBDs especficos:MySQLPostgreSQLOracleSQL ServerSQLiteMongoIBM DB2Firebird/InterbaseCUBRIDDB+++dBasefileProFrontbaseSybaseIngresMaxDB(Entre outros)CaractersticasPHP d suporte a diversos protocolos de comunicaoLDAP: Lightweight Directory Access ProtocolIMAP: Internet Message Access ProtocolPOP3: Post Office ProtocolSMTP: Simple Mail Transfer ProtocolSOAP: Simple Object Access Protocol...

Tambm pode abrir conexes por sockets, e comunicar-se usando qualquer protocoloCaractersticasOu seja, voc escolhe:Servidor web: Apache, IIS, LiteSpeed, TUX, thttpd, ...Sistema operacional: Unix, Linux, Windows, OS X, Risc, ...Programao procedural, orientada a objetos, ou hbridaExtensesSGBDProtocolos de comunicao

= Flexibilidade

A linguagem em siOutras maneiras, para os diferentesPara cdigo embutido em HTML

Short tags (depende de configurao)Maneira normal e bonita, para todas as ocasies

Delimitando o cdigo PHP

TiposPrimitivos

Integer

Float (32 bits)Double (64 bits)

Boolean

String (no h limite mximo)TiposArraysNa verdade, so mapas (arrays associativos)Array associativoPauloJooTRUE42ndicesValoresQualquer tipoInteger ou stringTiposArraysCriao do array

var_dump($um_array)

var_dump($outro_array)Contedo das variveis com o comando var_dump($variavel):TiposArraysAcesso ao array

Acesso aos arrays

$um_array

$outro_arrayTiposArraysInserir no array

Array original

Array aps a insero acimaTiposArraysInserir no arrayArray originalArray aps inseres acima

TiposArraysDeletar do array (usar funo unset($variavel))Array originalArray aps a remoo acima

ndice 2 foi removido, e o array no foi reindexado (ndices mantidos)TiposArraysPassar a varivel do array como argumento para a funo unset($variavel) vai resultar na remoo completa do array

Ao tentar acessar a varivel $outro_array, TiposObs: Strings podem ser tratadas como arrays de caracteres

TiposTipos especiaisResource: Varivel especial, que armazena referncia para recursos externos (handlers de arquivos, conexes de banco de dados, canvas de imagens)

NULL: Indica quando uma varivel no possui nenhum valor . A varivel tem valor NULL se:Foi definida com a constante NULL;Ainda no recebeu nenhum valor;Foi apagada atravs de unset()

Object: Instncia de classeSistema de TiposPHP dinamicamente tipadaVariveis, parmetros e expresses no tm tipo fixo associado. Apenas valores tm tipo, e as variveis podem assumir valores de diferentes tipos durante a execuo do programa.

Ou seja, em PHP no h declarao de variveis

Sistema de TiposPHP fracamente tipadaA converso de um valor de um tipo para outro feita implicitamente (coero)

O programador deve ter cuidado com essa feature da linguagem, especialmente estes dois seguintes casos estranhos:

Coero de String para IntegerSistema de TiposConverso de strings para nmerosSe a string est sendo avaliada em um contexto numrico, o valor resultante numrico, determinado por essas regras:Se a string no contm os caracteres ., e e E, e seu valor numrico est nos limites de Integer, tratada como nmero inteiroCaso contrrio, tratada como floatO valor numrico dado pela poro inicial da string. Se essa poro no for um nmero vlido, o valor 0Sistema de TiposConverso de strings para nmeros

Sistema de TiposConverso em BooleanSe for usado em operador, funo ou estrutura de controle que requer argumento Boolean, qualquer valor convertido automaticamente em BooleanValorBooleanNULLFalseArray()FalseObjectTrue0False0.0001True42True-1TrueValorBooleanFalse0False1True-1TrueJooTrueFalseTrueResourceTrueSistema de TiposChecagem de tiposPor ser dinamicamente tipada, no h checagem de tipos em PHPH funes para a observao do tipo da varivel, para uma checagem de tipos manual, caso seja necessrio:is_array()is_bool()is_double()is_float()is_int()is_null()is_numeric()is_object()is_resource()is_scalar()is_string()gettype()get_resource_type()get_class()Sistema de TiposPHP 5 introduziu o conceito de Type HintingCom Type Hinting, possvel forar que os parmetros de funes sejam de uma classe especfica de Object, Interface ou Array (esse, apenas desde PHP 5.1)

VariveisRepresentadas por um $ seguido de letras, nmeros e smbolos (iniciando com letra)

Atribuio por refernciaNova varivel um apelido para a referenciada

Variveis$this um nome reservado

Variveis predefinidas: Acessveis em qualquer escopo de qualquer programa$GLOBALS$_SERVER$_GET$_POST$_FILES$_REQUEST$_SESSION$_ENV$_COOKIE$php_errormsg$HTTP_RAW_POST_DATA$http_response_header$argc$argvConstantesDefinio atravs da funo define()

Tambm existem diversas constantes pr-definidas

__LINE____FILE____DIR____FUNCTION____CLASS__PHP_VERSIONPHP_INT_MAXVrias outrasFunesDefinio

Chamada

FunesArgumentos opcionais

FunesQualquer cdigo PHP vlido pode ser colocado no corpo de definio de funo incluindo definio de outras funes e classes

Como PHP estupidamente GELADA dinmica, a funo s definida no momento em que o fluxo passar por sua definio. Por isso deve-se ter cuidado para no fazer invocao a uma funo indefinidaFunes

Fluxo no passa por esse ponto, portanto essa funo no definidaFunesA passagem de parmetro feita, por default:Por cpia/valor, quando o parmetro no for um ObjectPor referncia, caso o parmetro for um Object

Type hinting!FunesPorm, tambm pode-se usar o operador & para fazer a passagem por referncia, quando necessrio

FunesSobrecargaPHP no d suporte a nenhum tipo de sobrecarga de funes dando erro fatal ao se tentar (nem tente)

OperadoresAritmticos

Obs: O operador Diviso resulta em inteiro caso seja diviso exata entre inteiros, ponto flutante caso contrrioExemploNome-$aNegao$a + $bAdio$a - $bSubtrao$a * $bMultiplicao$a / $bDiviso$a % $bMduloBit a bitExemploNome$a & $bAND$a | $bOR$a ^ $bXOR~$aNOT$a > $bDeslocamento direitaOperadoresComparaoExemploNome$a == $bIgual$a === $bIdntico$a != $bDiferente$a $bDiferente$a !== $bNo idntico$a < $bMenor que$a > $bMaior que$a = $bMaior ou igualLevam em conta o tipoOperadoresComparao

Observar coeres discutidas anteriormente!OperadoresLgicosExemploNome$a && $bAND$a || $bOR$a xor $bXOR!$aNOTObservar coeres para Boolean

OperadoresConcatenao: . (ponto)

Atribuio (alm do =)

ExemploNome$a++Ps-Incremento++$aPr-Incremento$a--Ps-Decremento--$aPr-DecrementoExemploSignificado$a += $b$a = $a + $b$a -= $b$a = $a - $b$a *= $b$a = $a * $b$a /= $b$a = $a / $b$a %= $b$a = $a % $b$a .= $b$a = $a . $bOperadores possvel fazer atribuio de mais de uma varivel ao mesmo tempo, com a funo list()

list($var1, $var2, ...) = $array

Obs.: S funciona em arrays com ndices numricosndice 0ndice 1OperadoresOperador ternrio

condicao ? expressao1 : expressao2

avaliado em expressao1 caso condicao seja um valor verdadeiro, e expressao2 caso contrrio

Estruturas de ControleComandos condicionaisIf/elseif/else

if (exp) {...}elseif (exp) {...}else {...}

Estruturas de ControleComandos condicionaisSwitch

switch (exp) { case valor1: ...break;case valor2:...break;...default:...break;}

Estruturas de ControleComandos iterativosWhile

while (exp) {...}

O programador deve ter cuidado para que exp em algum momento deixe de ser verdadeira, para evitar loop infinito:

Estruturas de ControleComandos iterativosDo-while

do {...} while (exp);

For

for (exp1; exp2; exp3) {...}

Estruturas de ControleComandos iterativosForeach: Iterar sobre arrays

foreach (array as $valor) {...}

foreach (array as $indice => $valor) {...}

Estruturas de ControleSequenciadores de escapeContinuePula o restante da iterao corrente, em um loopBreakInterrompe a iterao corrente e sai do loop

Classes e ObjetosPHP 5 tem um modelo de objetos completoVisibilidadeHeranaPolimorfismoInterfacesFinal, static e abstractSobrescrita...

Classes e ObjetosBasico

Pode usar o alias __construct

Classes e ObjetosBasicoPrecisava ser da classe DateTimeClasses e ObjetosMtodos e atributos estticos

Acesso

Classes e ObjetosHerana

Classes e ObjetosClasses e mtodos abstratos

Classes e ObjetosInterfaces

Uma interface tambm pode herdar (extends) de uma ou mais interfaces

Classes e ObjetosSobrescritaUma classe pode sobrescrever mtodos de sua classe me

Classes e ObjetosFinalClasses declaradas com final no podero ser extendidasMtodos declaradas com final no podero ser sobrescritos

Frameworks

FrameworksEsses frameworks destinam-se ao Rapid Application Development (RAD), aplicando o modelo MVC (Model-View-Controller)

FrameworksTambm incluem diversos recursos embutidos, como:APIs, como Google, Facebook, Twitter, etc...Web services, tanto para publicar quanto consumirServios de autenticaoAJAX, jQuery, ScriptaculousSegurana...FrameworksCada framework tem seus prprios recursos. Ento como escolher?Tudo depende de suas necessidades ()Qual o principal foco de sua aplicaoQual ser o seu ambiente de hospedagemQuais os pontos fortes/fracos do desenvolvedor?

Quem poder me ajudar?PHP Frameworks (phpframeworks.com) um site que d as caractersticas e classifica os frameworks mais conhecidos

Dvidas?

Acabou!RefernciasDocumentao oficial de PHP: http://www.php.net/docs.php, acessado em 29/04/2012PHP Profissional Alexandre Melo/Maurcio Nascimento, Editora NovatecApresentao Cross Platform PHP, de Elizabeth Smith, disponvel em http://emsmith.net/resources, acessado em 29/04/2012Apresentao PHP para Aplicaes Web de Grande Porte, de Felipe Ribeiro, disponvel em http://www.slideshare.net/felipernb, acessado em 29/04/2012TIOBE Index, disponvel em http://www.tiobe.com/index.php/content/ paperinfo/tpci/index.html, acessado em 29/04/2012Usage Statistics and Market Share of Server-side Programming Languages for Websites, April 2012, disponvel em http://w3techs.com/technologies/ overview/programming_language/all, acessado em 29/04/2012Job Search | one search. all jobs. Indeed.com, disponvel em http://www.indeed.com, acessado em 29/04/2012Programming language trends - March 2012 | Jobs Tractor, disponvel em http://jobstractor.com/monthly-stats, acessado em 29/04/2012