PHP e Sistemas de Informação Web

Slides:



Advertisements
Apresentações semelhantes
PRÓ-INFORMÁTICA QUALIFICAÇÃO PROFISSIONAL
Advertisements

Paulo Marques Hernâni Pedroso
PHP Constantino Martins DEI – Departamento de Engenharia Informática
Parte I Capítulo 5 Reutilizando código e escrevendo funções.
Histórico do Java 1990 James Gosling (Sun Microsystems)
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
Programação Básica em Java
Diagrama de Classes.
Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Ferramenta de Desenvolvimento Material I-Bimestre Introdução Programação.
Paradigmas da Programação
WAMP5 2.0 "Um pacotão completo e gratuito que inclui Apache, PHP5, MySQL database, PHPmyadmin e SQLitemanager!" O WAMP5 (que significa Windows, Apache,
PHP Mauro César Lopes
Introdução ao JavaScript
Laboratório de Programação de Computadores I
PHP Mauro César Lopes
Prof.: Carlos Hairon R. Gonçalves
PHP Lissandra Fuganti A vida é uma peça de teatro que não permite ensaios... Por isso, cante, ria, dance, chore e viva intensamente cada momento de sua.
EL e JSTL Prof. Danton Cavalcanti Franco Junior
Desenvolvimento de Projetos e Aplicações Web
Tópicos avançados em internet B Carlos Oberdan Rolim Ciência da Computação.
Programação Web com PHP
Linguagem de Expressão (EL)
Aula R Prof. Naércio Filho Técnico em Informática
PHP Tipos de dados Constantes.
Por André Luis e Arthur Kalsing Mini-curso de PHP.
Curso básico de PHP 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web PHP.
FTIN Formação Técnica em Informática
Linguagem Técnica de Programação VI Prof.: Luiz Gustavo Jordão Soares.
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Web Services Uninorte Semana de Tecnologia da Informação
Técnico em Informática - Senac
Tipos de Dados Paradigmas de Programação
Operadores e Atribuições Capítulo 3
ASP (Active Server Pages)
Mini Curso Java como Programar
Desenvolvimento de WEB sites com PHP Breno Leonardo Gomes de Menezes Araújo
Professor: Márcio Amador
PROGRAMAÇÃO PARA INTERNET Prof.: Jean Carlo Mendes
Curso Técnico em Informática Disciplina: Programação Web 2 - PHP
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente.
Programação e Aplicações Gráficas
PROGRAMAÇÃO WEB AULA 01 Prof. Gustavo Linhares
JAVA Sintaxe.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Fundamentos da Linguagem C#
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Desenvolvimento de Sites Dinâmicos para Web Prof. Anderson M. Fernandes Mestrando em Informática.
Aula 1 Introdução à Programação WEB I PHP, ASP e JSP
Trechos de código que permitem reutilização de uma mesma tarefa. Qualquer código PHP pode estar contido no interior de uma função. Não se pode definir.
Programação para Web I AULA 4 ESTRUTURAS DE CONTROLE.
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
PROGRAMAÇÃO PARA INTERNET Prof.: Jean Carlo Mendes
APRESENTAÇÃO DA DISCIPLINA
VARIÁVEIS Desenvolvido pelo Mestrando Rodrigo Moreira Barreto – VHLab (Virtual Humans Simulation Laboratory – PUCRS) 1 Desenvolvido por: Rodrigo Moreira.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Desenvolvimento Web II Professor Jarbas Araújo. Página  2 – Por que aprender JavaScript? Se buscarmos na internet por respostas a esta pergunta, encontramos:
Programação para Web I AULA 2 BANCO DE DADOS.
Programação PHP Gustavo Eduardo Terra.
Raniere ferreira do prado
Ismael Stangherlini – Programa de Educação Tutorial.
Variáveis, expressões e comandos Dilvan Moreira. Lembrando …  Instalação normal (para utilizar no PC com Windows) 
Programação para Internet Rica– Aula 05 Prof. Me. Ronnison Reges Vidal.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
 Linguagem do tipo script  Roda do lado do servidor – “server-side”  Suporte à vários BDs (MySQL, Postgres, Oracle, entre outros.)  Ferramentas grátis.
Transcrição da apresentação:

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 Jpribeiro.com / joao@jpribeiro.com

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

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

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)

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

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)

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

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

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 (http://w3techs.com) – sendo a linguagem server-side mais utilizada

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

Por que aprender Tem muita vaga de trabalho Dados do site JobsTractor (jobstractor.com), com as vagas anunciadas via Twitter (16.855 vagas anunciadas em março 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 Apresentação durante a Semana Acadêmica de Computação :-)

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

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

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

Características Processador de hipertexto server-side

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

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”

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

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

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)

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

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

A linguagem em si

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)

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

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

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)

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

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

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

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)

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,

Tipos Obs: Strings podem ser tratadas como arrays de caracteres

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

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

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

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

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

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

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()

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)

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

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

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

Funções Definição Chamada

Funções Argumentos opcionais

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

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

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!

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

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

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

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

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

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

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

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

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

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

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

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:

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

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

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

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

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

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

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

Classes e Objetos Herança

Classes e Objetos Classes e métodos abstratos

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

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

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

Frameworks

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

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 ...

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

Dúvidas?

Acabou!

Referências Documentação oficial de PHP: http://www.php.net/docs.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 http://emsmith.net/resources, acessado em 29/04/2012 Apresentação “PHP para Aplicações Web de Grande Porte”, de Felipe Ribeiro, disponível em http://www.slideshare.net/felipernb, acessado em 29/04/2012 TIOBE Index, disponível em http://www.tiobe.com/index.php/content/ 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 http://w3techs.com/technologies/ overview/programming_language/all, acessado em 29/04/2012 Job Search | one search. all jobs. Indeed.com, disponível em http://www.indeed.com, acessado em 29/04/2012 Programming language trends - March 2012 | Jobs Tractor, disponível em http://jobstractor.com/monthly-stats, acessado em 29/04/2012