A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

PHP e Sistemas de Informação Web

Apresentações semelhantes


Apresentação em tema: "PHP e Sistemas de Informação Web"— Transcrição da apresentação:

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

2 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 Jpribeiro.com /

3 1º site de escola da cidade a disponibilizar o boletim online
CERC (2002) 1º site de escola da cidade a disponibilizar o boletim online

4 Sistema de controle acadêmico
Cesrei (2006) Sistema de controle acadêmico

5 O Que é ? Linguagem de programação (sério?) Focada na web
Inicialmente, PHP = Personal Home Page (Péssimo) Depois, PHP: PHP Hypertext Processor (Recursivo, e bem melhor)

6 Histórico 1994: Páginas HTML estáticas

7 Histórico Rasmus Lerdorf criou o core de PHP (em C) com uma série de utilitários para dinamizar/monitorar o conteúdo de seu próprio site Comunidade do software livre interessou-se e contribuiu para a criação do PHP/FI (Personal Home Page / Forms Interpreter)

8 Histórico Em 1998, foi lançado o PHP 3, primeiro que se assemelha com o atual (PHP/FI, em sua versão 2, foi descontinuado) Infraestrutura sólida para diferentes bancos de dados, protocolos e APIs PHP 4 lançado em 2000, com nova Zend Engine Zend = Zeev Suraski + Andi Gutmans Melhoria de performance nos servidores PHP 5 (versão atual) lançado em 2004 Orientação a objetos

9 Por que aprender PHP é uma das linguagens mais utilizadas do mundo
Figura no top 10 do TIOBE index ( há 10 anos Atualmente (Abril 2012), está na 6ª posição, atrás dos “Cs” (C, C++, Objective-C e C#) e Java

10 Por que aprender PHP é uma das linguagens mais utilizadas do mundo
PHP é usado em 77,6% dos sites na internet, de acordo com os dados da W3Techs ( – sendo a linguagem server-side mais utilizada

11 Por que aprender Tem muita vaga de trabalho
Dados do site Indeed.com, linguagens server-side (EUA)

12 Por que aprender Tem muita vaga de trabalho
Dados do site JobsTractor (jobstractor.com), com as vagas anunciadas via Twitter ( vagas anunciadas em março de 2012)

13 Quem usa PHP?

14 Quem usa

15 Quem usa

16 Quem usa

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

18 Quem usa

19 Quem usa

20 Quem usa Apresentação durante a Semana Acadêmica de Computação :-)

21 Características Linguagem de scripts
Código pode ser mesclado em meio a HTML

22 Características Página HTML resultante Código-fonte do HTML resultante

23 Características Linguagem interpretada Roda em servidor
Código não é compilado - interpretado a cada execução Roda em servidor Servidor executa o interpretador PHP Apache HTTP Server: Servidor web mais popular do mundo (mais de 100 milhões de sites – WOW) Versões para muitos diferentes SO Open-source

24 Características Processador de hipertexto server-side

25 Características Multiplataforma Open-source!
Interpretadores para as mais diferentes plataformas Unix, Linux, Windows, OS X, Risc, Netware, Solaris Disponibilizado o código-fonte no site oficial (php.net) Write once, run everywhere Open-source! Programação procedural, orientada a objetos, ou híbrida

26 Características PHP também pode ser utilizado em outras formas:
CLI: Command Line Interface PHP-GTK: Extensão para escrever aplicações desktop com interface gráfica Segundo a documentação oficial: “PHP is probably not the very best language to create a desktop application with a graphical user interface”

27 Características Output Existem muitas (muitas) extensões na internet:
HTML Imagens (Extensão GD): GIF, PNG, JPEG, WBMP, XPM PDF (Extensão PDFlib) Flash (Extensão libswf) XML, XHTML (Extensão libxml) ... Existem muitas (muitas) extensões na internet: PECL (PHP Extension Community Library): 280 pacotes PEAR (PHP Extension and Application Repository): 586 pacotes

28 Características Um dos pontos mais fortes de PHP é sua integração incrivelmente simples com bancos de dados Camadas de abstração: DBA: Database Abstraction Layer dbX: Abstração de algum BD específico (X) ODBC: Open Data Base Connectivity Adabas D, IBM DB2, iODBC, Solid, Sybase SQL Anywhere PDO: PHP Data Objects

29 Características Extensões de SGBDs específicos: MySQL PostgreSQL
Oracle SQL Server SQLite Mongo IBM DB2 Firebird/Interbase CUBRID DB+++ dBase filePro Frontbase Sybase Ingres MaxDB (Entre outros)

30 Características PHP dá suporte a diversos protocolos de comunicação
LDAP: Lightweight Directory Access Protocol IMAP: Internet Message Access Protocol POP3: Post Office Protocol SMTP: Simple Mail Transfer Protocol SOAP: Simple Object Access Protocol ... Também pode abrir conexões por sockets, e comunicar-se usando qualquer protocolo

31 Características = Flexibilidade Ou seja, você escolhe:
Servidor web: Apache, IIS, LiteSpeed, TUX, thttpd, ... Sistema operacional: Unix, Linux, Windows, OS X, Risc, ... Programação procedural, orientada a objetos, ou híbrida Extensões SGBD Protocolos de comunicação = Flexibilidade

32 A linguagem em si

33 Delimitando o código PHP
Maneira normal e bonita, para todas as ocasiões Outras maneiras, para os diferentões Para código embutido em HTML Short tags (depende de configuração)

34 Tipos Primitivos Integer Float (32 bits) Double (64 bits) Boolean
String (não há limite máximo)

35 Tipos Índices Valores Arrays
Na verdade, são mapas (arrays associativos) Array associativo “João” “Paulo” 42 TRUE Índices Valores Qualquer tipo Integer ou string

36 var_dump($outro_array)
Tipos Arrays Criação do array Conteúdo das variáveis com o comando var_dump($variavel): var_dump($outro_array) var_dump($um_array)

37 Tipos Arrays Acesso ao array $um_array $outro_array Acesso aos arrays

38 Array após a inserção acima
Tipos Arrays Inserir no array Array original Array após a inserção acima

39 Array após inserções acima
Tipos Arrays Inserir no array Array original Array após inserções acima

40 Tipos Arrays Deletar do array (usar função unset($variavel))
Array original Array após a remoção acima Índice 2 foi removido, e o array não foi reindexado (índices mantidos)

41 Tipos Arrays Passar a variável do array como argumento para a função unset($variavel) vai resultar na remoção completa do array Ao tentar acessar a variável $outro_array,

42 Tipos Obs: Strings podem ser tratadas como arrays de caracteres

43 Tipos Tipos especiais Resource: Variável especial, que armazena referência para recursos externos (handlers de arquivos, conexões de banco de dados, canvas de imagens) NULL: Indica quando uma variável não possui nenhum valor . A variável tem valor NULL se: Foi definida com a constante NULL; Ainda não recebeu nenhum valor; Foi apagada através de unset() Object: Instância de classe

44 Sistema de Tipos PHP é dinamicamente tipada
Variáveis, parâmetros e expressões não têm tipo fixo associado. Apenas valores têm tipo, e as variáveis podem assumir valores de diferentes tipos durante a execução do programa. Ou seja, em PHP não há declaração de variáveis

45 Coerção de String para Integer
Sistema de Tipos PHP é fracamente tipada A conversão de um valor de um tipo para outro é feita implicitamente (coerção) O programador deve ter cuidado com essa feature da linguagem, especialmente estes dois seguintes casos “estranhos”: Coerção de String para Integer

46 Sistema de Tipos Conversão de strings para números
Se a string está sendo avaliada em um contexto numérico, o valor resultante é numérico, determinado por essas regras: Se a string não contém os caracteres “.”, “e” e “E”, e seu valor numérico está nos limites de Integer, é tratada como número inteiro Caso contrário, é tratada como float O valor numérico é dado pela porção inicial da string. Se essa porção não for um número válido, o valor é 0

47 Sistema de Tipos Conversão de strings para números

48 Sistema de Tipos Conversão em Boolean
Se for usado em operador, função ou estrutura de controle que requer argumento Boolean, qualquer valor é convertido automaticamente em Boolean Valor Boolean NULL False Array() Object True 0.0001 42 -1 Valor Boolean “” False “0” “1” True “-1” “João” “False” Resource

49 Sistema de Tipos Checagem de tipos
Por ser dinamicamente tipada, não há checagem de tipos em PHP Há funções para a observação do tipo da variável, para uma checagem de tipos manual, caso seja necessário: 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()

50 Sistema de Tipos PHP 5 introduziu o conceito de Type Hinting
Com Type Hinting, é possível forçar que os parâmetros de funções sejam de uma classe específica de Object, Interface ou Array (esse, apenas desde PHP 5.1)

51 Variáveis Representadas por um $ seguido de letras, números e símbolos (iniciando com letra) Atribuição por referência Nova variável é um “apelido” para a referenciada

52 Variáveis $this é um nome reservado
Variáveis predefinidas: Acessíveis 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 $argv

53 Constantes Definição através da função define()
Também existem diversas constantes pré-definidas __LINE__ __CLASS__ __FILE__ PHP_VERSION __DIR__ PHP_INT_MAX __FUNCTION__ Várias outras

54 Funções Definição Chamada

55 Funções Argumentos opcionais

56 Funções Qualquer código PHP válido pode ser colocado no corpo de definição de função incluindo definição de outras funções e classes Como PHP é estupidamente GELADA dinâmica, a função só é definida no momento em que o fluxo passar por sua definição. Por isso deve-se ter cuidado para não fazer invocação a uma função indefinida

57 Fluxo não passa por esse ponto, portanto essa função não é definida
Funções Fluxo não passa por esse ponto, portanto essa função não é definida

58 Funções A passagem de parâmetro é feita, por default:
Por cópia/valor, quando o parâmetro não for um Object Por referência, caso o parâmetro for um Object Type hinting!

59 Funções Porém, também pode-se usar o operador & para fazer a passagem por referência, quando necessário

60 Funções Sobrecarga PHP não dá suporte a nenhum tipo de sobrecarga de funções – dando erro fatal ao se tentar (nem tente)

61 Operadores Aritméticos Bit a bit
Obs: O operador Divisão resulta em inteiro caso seja divisão exata entre inteiros, ponto flutante caso contrário Bit a bit Exemplo Nome -$a Negação $a + $b Adição $a - $b Subtração $a * $b Multiplicação $a / $b Divisão $a % $b Módulo Exemplo Nome $a & $b AND $a | $b OR $a ^ $b XOR ~$a NOT $a << $b Deslocamento à esquerda $a >> $b Deslocamento à direita

62 Operadores Comparação Exemplo Nome $a == $b Igual $a === $b Idêntico
Diferente $a <> $b $a !== $b Não idêntico $a < $b Menor que $a > $b Maior que $a <= $b Menor ou igual $a >= $b Maior ou igual Levam em conta o tipo

63 Observar coerções discutidas anteriormente!
Operadores Comparação Observar coerções discutidas anteriormente!

64 Operadores Lógicos Exemplo Nome $a && $b AND $a || $b OR $a xor $b XOR
NOT Observar coerções para Boolean

65 Operadores Concatenação: . (ponto) Atribuição (além do =) Exemplo
Significado $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 . $b Exemplo Nome $a++ Pós-Incremento ++$a Pré-Incremento $a-- Pós-Decremento --$a Pré-Decremento

66 list($var1, $var2, ...) = $array
Operadores É possível fazer atribuição de mais de uma variável ao mesmo tempo, com a função list() list($var1, $var2, ...) = $array Índice 0 Índice 1 Obs.: Só funciona em arrays com índices numéricos

67 Operadores Operador ternário condicao ? expressao1 : expressao2
É avaliado em expressao1 caso condicao seja um valor verdadeiro, e expressao2 caso contrário

68 Estruturas de Controle
Comandos condicionais If/elseif/else if (exp) { ... } elseif (exp) { else {

69 Estruturas de Controle
Comandos condicionais Switch switch (exp) { case valor1: ... break; case valor2: default: }

70 Estruturas de Controle
Comandos iterativos While while (exp) { ... } O programador deve ter cuidado para que exp em algum momento deixe de ser verdadeira, para evitar loop infinito:

71 Estruturas de Controle
Comandos iterativos Do-while do { ... } while (exp); For for (exp1; exp2; exp3) {...}

72 Estruturas de Controle
Comandos iterativos Foreach: Iterar sobre arrays foreach (array as $valor) {...} foreach (array as $indice => $valor) {...}

73 Estruturas de Controle
Sequenciadores de escape Continue Pula o restante da iteração corrente, em um loop Break Interrompe a iteração corrente e sai do loop

74 Classes e Objetos PHP 5 tem um modelo de objetos completo Visibilidade
Herança Polimorfismo Interfaces Final, static e abstract Sobrescrita ...

75 Pode usar o alias __construct
Classes e Objetos Pode usar o alias __construct Basicão

76 Precisava ser da classe DateTime
Classes e Objetos Precisava ser da classe DateTime Basicão

77 Classes e Objetos Métodos e atributos estáticos Acesso

78 Classes e Objetos Herança

79 Classes e Objetos Classes e métodos abstratos

80 Classes e Objetos Interfaces
Uma interface também pode herdar (extends) de uma ou mais interfaces

81 Classes e Objetos Sobrescrita
Uma classe pode sobrescrever métodos de sua classe mãe

82 Classes e Objetos Final
Classes declaradas com final não poderão ser extendidas Métodos declaradas com final não poderão ser sobrescritos

83 Frameworks

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

85 Frameworks Também incluem diversos recursos embutidos, como:
APIs, como Google, Facebook, Twitter, etc... Web services, tanto para publicar quanto consumir Serviços de autenticação AJAX, jQuery, Scriptaculous Segurança ...

86 Frameworks Cada framework tem seus próprios recursos. Então como escolher? Tudo depende de suas necessidades (óóóó) Qual o principal foco de sua aplicação Qual será o seu ambiente de hospedagem Quais os pontos fortes/fracos do desenvolvedor? Quem poderá me ajudar? PHP Frameworks (phpframeworks.com) é um site que dá as características e classifica os frameworks mais conhecidos

87 Dúvidas?

88 Acabou!

89 Referências Documentação oficial de PHP: acessado em 29/04/2012 PHP Profissional – Alexandre Melo/Maurício Nascimento, Editora Novatec Apresentação “Cross Platform PHP”, de Elizabeth Smith, disponível em acessado em 29/04/2012 Apresentação “PHP para Aplicações Web de Grande Porte”, de Felipe Ribeiro, disponível em acessado em 29/04/2012 TIOBE Index, disponível em paperinfo/tpci/index.html, acessado em 29/04/2012 Usage Statistics and Market Share of Server-side Programming Languages for Websites, April 2012, disponível em overview/programming_language/all, acessado em 29/04/2012 Job Search | one search. all jobs. Indeed.com, disponível em acessado em 29/04/2012 Programming language trends - March 2012 | Jobs Tractor, disponível em acessado em 29/04/2012


Carregar ppt "PHP e Sistemas de Informação Web"

Apresentações semelhantes


Anúncios Google