Upload
internet
View
103
Download
1
Embed Size (px)
Citation preview
PHPProf. Msc. Vitor Mesaque A. Lima
• Atualmente é a linguagem de programação Web mais utilizada pelos desenvolvedores
• Apesar do surgimento de frameworks “confortáveis” em outras linguagens, tais como o Ruby on Rails e o .NET, o surgimento de aplicações super-populares como o Wordpress fazem do PHP um requisito fundamental no desenvolvimento Web.
Introdução
• PHP é “uma linguagem de scripts de propósito geral que é especialmente adequada ao desenvolvimento Web e pode ser embutida em HTML”
• PHP é uma linguagem de script do lado do servidor, ou seja, todos os dados são interpretados e enviados para o navegador antes da página Web ser carregada
O que é PHP?
O que é PHP?
• PHP: um acrônimo recursivo para “PHP: Hypertext Preprocessor”– É uma linguagem de programação de
computadores interpretada– Utilizada para gerar conteúdo dinâmico na Web– Linguagem server-side– Orientada a objetos– Código-fonte aberto e livre
• O PHP pode ser embutido no HTML, sempre para gerar mais HTML
Programação para Web 4
O que é PHP?
• HTML é 100% estático
• Com a implementação do PHP em seu código, pode-se criar sites dinâmicos
• O PHP pode ser embutido dentro do HTML, e vice-versa– Não importa o quão complicado é o PHP, sua saída será um HTML
simples
• Sua sintaxe é muito semelhante à de outras linguagens: ASP.NET, Perl, JavaScript, C, C++, C#, etc
PHP- Arquitetura
PHP + Apache
HTML
Banco de Dados
1. Fácil curva de aprendizado– Quanto menos tempo você gastar procurando o
manual e estudando a linguagem, mais tempo o desenvolvedor terá para criar e otimizar sua aplicação
– Uma das melhores características do PHP é que é extremamente fácil de aprender em comparação a outras linguagens
– A sintaxe é indiscutivelmente lógica e muitas das funções comuns fazem exatamente o que descrevem
Vantagens
2. Sintaxe familiar– PHP é uma linguagem excelente para
desenvolvedores com experiência em programação, especialmente de programação em C e Perl, nas quais a sintaxe do PHP é baseada
3. Custo– É livre e open source
4. Performance– PHP é uma linguagem de programação Web
eficiente
Quais as vantagens de usar PHP?
5. Comunidade– PHP possui uma comunidade grande– O site http://php.net/ possui documentação
aprofundada e abrangente. Além disso, existem milhares de fóruns e sites de ajuda. Por ser open source, há muito desenvolvimento colaborativo, sendo a linguagem constantemente melhorada.
Quais as vantagens de usar PHP?
PHP - Histórico• 1994: surgiu como um pacote de programas CGI criados por Rasmus
Lerdof, com o nome Personal Home Page Tools, para substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua página pessoal
• 1997: foi lançado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, um interpretador de comandos SQL
• 1998: PHP 3 de Zeev Suraski contava recursos de OO
• 2000: Pouco depois, Zeev e Andi Gutmans, escreveram o PHP 4, abandonando por completo o PHP 3, com mais recursos de OO
• 2004: PHP 5 que está mais OO
Programação para Web 10
Introdução• Após instalar o PHP
– LAMP (Linux, Apache, MySQL e PHP) – WAMP (Windows, Apache, MySQL e PHP)– MAMP (Mac, Apache, MySQL e PHP)
• Crie seu primeiro arquivo PHP. Normalmente o Apache é configurado para procurar a sintaxe PHP em arquivos com a extensão ‘.php’– Para avisar o servidor que estamos trabalhando com PHP, é necessário usar a
seguinte sintaxe ao adicionar PHP em seus documentos HTML:
Programação para Web 11
<?php...aqui vai o código...?>
<?php echo “Olá mundo!”; ?>
<?= ‘Olá mundo!’ ?>
Introdução
• PHP é case-sensitive;• PHP não é white-space sensitive;• Cada linha deve terminar com ponto-e-vírgula;
– Quando temos uma única declaração não é necessário.• Comentários podem ser inseridos assim:
Programação para Web 12
<?php# This is a single line comment. // This is the most common way of commenting out your code. /* Here is a way to comment over multiple lines. This is the exact same way that you would comment in CSS */ ?>
Introdução - Definindo Variáveis
• Declaramos uma variável em PHP utilizando o símbolo ‘$’
• São dinamicamente tipadas
Programação para Web 13
<?php$myVar = ‘Isto é PHP em ação!’;echo $myVar;?>
<?php$myVar = ‘Isto é PHP em ação!’;$myVar = $myVar . ‘ Meu nome é Fulano de TAl.’;echo $myVar . ‘Minha página é fulanotal.com’;?>
Combinando HTML com PHP<html>
<header><title>Minha primeira página dinâmica</title>
</header><body>
<p><?php echo ‘Hoje é dia ’ . date (‘d-m-Y’) .
‘!’; ?></p><p><?php echo ‘Meu nome é
<strong>Fulano</strong>’; ?></p>
</body></html>
Programação para Web 14
Definindo uma função
Programação para Web 15
Vetores e Matrizes
• Vetores e matrizes em PHP estão organizadas em pares "chave" e "valor"– Existem três tipos de matrizes: associativa,
numérica, e multidimensionais• Matrizes associativas é uma maneira de colocar uma chave que
seja relacionada semânticamente ao valor• Matrizes numéricas são criadas por padrão quando não definimos
a chave• Matrizes multidimensionais são simplesmente arrays dentro de
arrays
Programação para Web 16
Vetores e Matrizes
Programação para Web 17
Principais Funções de Arrays
• array_key_exists• array_keys• in_array• array_merge• array_pop• array_shift• arsort• asort
Programação para Web 18
• count• reset• implode• explode
Loops
while (condição) { bloco_de_comandos }
do { bloco_de_comandos } while (condição);
for (inicializador ; condição ; incremento){ bloco_de_comandos }
foreach (vetor as chave => valor){ bloco_de_comandos }
Programação para Web 19
Loops
Programação para Web 20
Outros Conceitos Básicos
• Variáveis globais (uso da palavra-chave ‘global’ em funções)• Variáveis estáticas (uso da palavra-chave ‘static’)• Variáveis dinâmicas ($var)
• Constantes (‘define ()’)• Constantes reservadas: __LINE__, __FUNCTION__ e
__METHOD__• Principais operadores
Programação para Web 21
Funções de Manipulação de Arquivos
• file• file_get_contents• file_put_contents• copy• unlink• fopen• fread• fwrite
Programação para Web 22
• fflush• fclose• file_exists• is_readable• is_writable• feof
Manipulação de Arquivostry {
if (!file_exists ($path) && !@mkdir ($path, 0777))throw new Exception ('Impossível criar
diretório');$fd = fopen ($path .'log.'. date ('Ym'), 'a');if (!$fd)
throw new Exception (‘Erro abrir/criar arquivo!');if (!fwrite($fd, date('d-m-Y H:i:s') ."] ". $msg ."\n"))
throw new Exception (‘Erro ao gravar no arquivo!');fclose ($fd);
} catch (Exception $e) {die ($e->getMessage ());
}
Programação para Web 23
Funções de Manipulação de Cookies
bool setcookie (string $nome, string $valor, int $expira, string $caminho, string $domínio, bool $seguro, bool $somente http
)Programação para Web 24
“username”“jsilva”time () + 60 * 60 * 24 * 30“admin/”“admin.site.com.br”11
Manipulação de Cookies
Programação para Web 25
Trabalhando com Sessões
Programação para Web 26
Orientação a Objetos
• PHP é muito mais do que uma linguagem de script, é uma linguagem de programação plenamente desenvolvida capaz de construir aplicações muito complexas
• OOP representa Programação Orientada a Objetos– É um paradigma de programação onde você criar "objetos" para
trabalhar– Esses objetos podem ser adaptados às suas necessidades
específicas, para atender diferentes tipos de aplicações, mantendo a mesma base de código
– Ao dominar o poder total da programação Orientada a Objetos, você pode reduzir o tempo de codificação e usá-lo para construir WebApps melhores
Programação para Web 27
Criando uma classe
Programação para Web 28
Atributos e Métodos
Programação para Web 29
Criando uma sub-classe
Programação para Web 30
Outros Conceitos de OO no PHP
• No PHP 5, toda atribuição de variáveis do tipo objeto é por referência. Para criar cópias deve-se utilizar a palavra-chave ‘clone’– Uma interface funciona como se fosse um contrato,
contendo todas as regras que uma classe que a implementa deve conter para ser plenamente aceita. No PHP, são declaradas por meio da palavra-chave ‘interface’.
• O PHP 5 aceita indução de tipo nos parâmetros de métodos de classes (apenas ‘array’ e ‘object’)
Programação para Web 31
Classes Abstratas
• Declarada por meio da palavra-chave ‘abstract’• Não é permitido instanciá-las
– Qualquer classe que contiver pelo menos um método que seja abstrato deverá ser declarada como abstrata
– Podem conter tantos métodos concretos quanto abstratos, sendo que estes últimos devem ser codificados pela classe concreta que a estende
– Quando uma classe abstrata estende uma interface, não precisa codificar seus métodos
Programação para Web 32
Classes Abstratas
Programação para Web 33
Métodos gerais
• __construct• __destruct• __call• __get• __set• __isset• __unset• __toString• __clone
Programação para Web 34
Passagem de parâmetros por GET e POST
• Quando um formulário é submetido para um script PHP, qualquer variável do formulário será automaticamente disponibilizada para ele.– O metodo GET obtem os dados da QUERY_STRING
• Por exemplo, http://www.example.com/test.php?id=3 contém os dados GET que serão acessíveis com $_GET['id']
– O PHP entende arrays no contexto de variáveis de formulários. Pode-se agrupar variáveis relacionadas juntas, ou usar esse recurso para receber valores de um campo de seleção múltipla.
Programação para Web 35
Passagem de parâmetros por GET e POST
Programação para Web 36
PDO: Conexão com Banco de Dados
• PDO (PHP Data Objects) é um módulo de PHP montado sob o paradigma Orientado a Objetos e cujo objetivo é prover uma padronização da forma com que PHP se comunica com um banco de dados relacional– Apenas para PHP 5. – É uma interface que define um conjunto de classes e a assinatura dos
métodos de comunicação com uma base de dados.– Cada sistema gerenciador de bancos de dados (SGBD) pode prover um
driver para PDO.– Apesar de PDO definir a assinatura dos métodos que cada driver deve
implementar, alguns recursos podem não ser suportados. Por exemplo, algumas engines do SGBD MySQL não dão suporte a transações, logo o método "beginTransaction" simplesmente não terá efeito sob tais condições.
Programação para Web 37
PDO
• PDO não é uma camada de abstração de SQL– Portanto, usar PDO não significa que seu sistema
será portável entre diferentes SGBDs
– Utilizar PDO tende a ser mais simples do que utilizar biblioteca de funções, mas continua exigindo conhecimento da sintaxe SQL específica do modelo de SGBD envolvido.
Programação para Web 38
Conexão com MySQL antes do PDO
Programação para Web 39
Conexão com PostgreSQL antes do PDO
Programação para Web 40
Conexão com MySQL com PDO
Programação para Web 41
Utilizando o PDO
Após abrir uma conexão, as consultas podem ser feitas de duas maneiras:1. Através da própria conexão, com o método
"exec" ou o "query";2. Montando uma prepared statement com o
método "prepare", que devolve um objeto da classe PDOStatement, e depois executando o método "execute" (desta classe).
Programação para Web 42
$inseriu = $pdo->exec ('INSERT INTO logs (operacao) VALUES (1)');$ultimo_id = $pdo->lastInsertId();
Utilizando o PDO
Programação para Web 43
• Obtenção padronizada de erros ocorridos em consultas, através do método "errorInfo" e "errorCode" da classe PDO e PDOStatement– Suporte a inicialização e encerramento de
transações de forma padronizada (esta funcionalidade depende do suporte do SGBD), através dos métodos "beginTransaction", "commit" e "rollBack“
Outros benefícios do PDO
44Programação para Web
Outros benefícios do PDO
– Suporte para trabalhar com handle de arquivos para realizar inserções ou consultas a grandes volumes de dados, para economizar memória
• Isso acontece pois a própria classe PDO fica responsável por transmitir o arquivo "aos poucos", sem precisar carregá-lo inteiramente na memória, como seria feito da forma tradicional
• Um handle de arquivo utiliza uma variável do tipo resource, que funciona como um "ponteiro" para o arquivo
Programação para Web 45
Tratamento de Exceções
Programação para Web 46
Arrays Superglobais
• $GLOBALS• $_SERVER• $_GET• $_POST• $_FILES• $_COOKIE• $_SESSION• $_REQUEST• $_ENV
Programação para Web 47
FRAMEWORKS PHP
“Algumas vezes a programação se torna monótona e/ou repetitiva, e é aí que um framework pode ajudar”Thiago Dutra da Fonseca Belem
Programação para Web 48
“Os frameworks são definidos como aplicações semi-completas e reutilizáveis que, quando especializadas, produzem aplicações personalizadas dentro de um domínio específico” Foote e Johnson (1988).
– É uma estrutura, ou uma fundação, para criar a aplicação– Permite o desenvolvimento rápido de aplicações,
economizando tempo e ajudando a criar aplicações mais sólidas e seguras, além de reduzir a quantidade de código repetido [conceito: DRY]
O que é um framework?
49Programação para Web
• Principal motivo: agilizar o processo de desenvolvimento
• Re-utilização de código: o framework já traz uma série de módulos pré-configurados (envio de e-mails, conexão com o banco de dados, sanitização de dados, proteção contra ataques, etc)
• Estabilidade: a simplicidade, que é um dos grandes "feitos" do PHP, também é o que possibilita inúmeros erros e falhas pelos principiantes
Por que usar um framework PHP?
50Programação para Web
• Características desejáveis:– MVC: Arquiteura baseada em Model-View-Controller.
– Multiple DB’s: Suporte a conexões com diversos SGBDs distintos.
– ORM: Suporte a “object-record mapper” (geralmente uma implementação do ActiveRecord)
– DB Objects: Suporte a padrões de projeto que abstraiam SQL (TableGateWay)
– Templates: Possuir uma template engine embutida
– Caching: Suporte a caching
– Validation: Possuir um componente de validação de dados
– Ajax: Suporte nativo a Ajax
– Auth Module: Suporte nativo a autenticação de usuários
– Modules: Suporte a adição de novos módulo, tais como RSS feed parser, PDF module ou qualquer outra coisa útil
– EDP: Event Driven Programming
Principais frameworks PHP
51Programação para Web
• O CodeIgniter é um framework leve e fácil de usar, adequado para ambientes de hospedagem compartilhada por consumir poucos recursos– Está bem documentado e oferece uma biblioteca
com vídeos-tutoriais ensinando as suas funcionalidades
– É adequado para programadores iniciantes
http://codeigniter.com/
Principais frameworks PHP:CodeIgniter
52Programação para Web
• O framework da Zend foca na criação de aplicativos complexos e possui uma grande comunidade de desenvolvimento contribuindo para a sua construção– Dependendo de como desenvolver a sua aplicação,
poderá torná-la um pouco pesada, por isto é necessário um conhecimento um pouco mais avançado para tirar o melhor proveito desta ferramenta poderosa
http://www.zend.com/
Principais frameworks PHP:Zend Framework
53Programação para Web
• CakePHP poderia ser chamado de “PHP on Rails”, pois segue princípios utilizados em Ruby on Rails– É focado no desenvolvimento rápido de aplicativos– Recentemente tem se tornado muito famoso por
sua simplicidade e facilidade de uso
http://cakephp.org/
Principais frameworks PHP:CakePHP
54Programação para Web
• O framework Symfony se encaixa para programadores mais experientes, que desenvolvem aplicativos para uso corporativo– Também segue a filosofia do “Rails”
http://www.symfony-project.com/
Principais frameworks PHP:Symfony
55Programação para Web
• O Titan é um framework para instanciação de CMSs (Content Management Systems), ou seja, gerenciadores de conteúdo, para sistemas Web– A proposta do Titan Framework é ser uma solução
simples e completa para a instanciação de gerenciadores de conteúdo de forma rápida e fácil.
– Conceito lógico de navegação (Seções e Ações)– Seções podem ser organizadas visualmente em um
conceito de pais e filhos
Titan Framework
56Programação para Web
• Listas com Busca, Paginação e Ordenação
• Sistema de upload de arquivos completo
• Criação de páginas ricas (FCK)• RSS para monitoramento• Sistema de Cache (XMLs
parseados)• Chat• Uso extensivo de XML
– Cache para performance
• Controle de versões• Criação de repositórios privados
– Permite a criação de seus próprios componentes, tipos e templates
• Sistema de alertas• Sistema de Log• Gráficos quantitativos
automáticos• Ajax• Totalmente OO (PHP 5)• Lançamento de exceções para
controle de regras de negócios, validação e erros
Titan Framework - Características
57Programação para Web
• Núcleo (Core) independente e imutável em função de instâncias– Desenvolvimento e aprimoramento constante, mas
legado
Titan Framework - Arquitetura
58Programação para Web
Titan Framework - Documentação
• http://titanframework.com/
• Paradigma de desenvolvimento de software livre: baseado no conceito de comunidade
• Lista de discussão:http://groups.google.com.br/group/titan-framework