PHP Prof. Msc. Vitor Mesaque A. Lima. Atualmente é a linguagem de programação Web mais utilizada...

Preview:

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