PHP e Sistemas de Informação Web João Paulo Ribeiro jpribeiro.com.
-
Upload
raissa-gameiro-chaves -
Category
Documents
-
view
213 -
download
0
Transcript of PHP e Sistemas de Informação Web João Paulo Ribeiro jpribeiro.com.
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