Carregar apresentação
A apresentação está carregando. Por favor, espere
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.