Prof. Msc. Vitor Mesaque A. Lima PHP Prof. Msc. Vitor Mesaque A. Lima
Introdução 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.
O que é PHP? 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? 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
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 Banco de Dados HTML
Vantagens 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
Quais as vantagens de usar PHP? 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 Custo É livre e open source Performance PHP é uma linguagem de programação Web eficiente
Quais as vantagens de usar PHP? 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.
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
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: <?php ...aqui vai o código... ?> <?php echo “Olá mundo!”; ?> <?= ‘Olá mundo!’ ?> Programação para Web
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: <?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 */ ?> Programação para Web
Introdução - Definindo Variáveis Declaramos uma variável em PHP utilizando o símbolo ‘$’ São dinamicamente tipadas <?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’; ?> Programação para Web
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> <?php echo ‘Meu nome é <strong>Fulano</strong>’; ?> </body> </html> Programação para Web
Definindo uma função Programação para Web
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
Vetores e Matrizes Programação para Web
Principais Funções de Arrays array_key_exists array_keys in_array array_merge array_pop array_shift arsort asort count reset implode explode Programação para Web
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) Programação para Web
Loops Programação para Web
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
Funções de Manipulação de Arquivos file file_get_contents file_put_contents copy unlink fopen fread fwrite fflush fclose file_exists is_readable is_writable feof Programação para Web
Manipulação de Arquivos try { 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
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 ) “username” “jsilva” time () + 60 * 60 * 24 * 30 “admin/” “admin.site.com.br” 1 Programação para Web
Manipulação de Cookies Programação para Web
Trabalhando com Sessões Programação para Web
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
Criando uma classe Programação para Web
Atributos e Métodos Programação para Web
Criando uma sub-classe Programação para Web
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
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
Classes Abstratas Programação para Web
Métodos gerais __construct __destruct __call __get __set __isset __unset __toString __clone Programação para Web
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
Passagem de parâmetros por GET e POST Programação para Web
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
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
Conexão com MySQL antes do PDO Programação para Web
Conexão com PostgreSQL antes do PDO Programação para Web
Conexão com MySQL com PDO Programação para Web
Utilizando o PDO Após abrir uma conexão, as consultas podem ser feitas de duas maneiras: Através da própria conexão, com o método "exec" ou o "query"; 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). $inseriu = $pdo->exec ('INSERT INTO logs (operacao) VALUES (1)'); $ultimo_id = $pdo->lastInsertId(); Programação para Web
Utilizando o PDO Programação para Web
Outros benefícios do PDO 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“ Programaçã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
Tratamento de Exceções Programação para Web
Arrays Superglobais $GLOBALS $_SERVER $_GET $_POST $_FILES $_COOKIE $_SESSION $_REQUEST $_ENV Programação para Web
“Algumas vezes a programação se torna monótona e/ou repetitiva, e é aí que um framework pode ajudar” Thiago Dutra da Fonseca Belem Frameworks PHP Programação para Web
O que é um framework? “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] Programação para Web
Por que usar um framework PHP? 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 Programação para Web
Principais frameworks PHP 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 Programação para Web
Principais frameworks PHP: CodeIgniter 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/ Programação para Web
Principais frameworks PHP: Zend Framework 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/ Programação para Web
Principais frameworks PHP: CakePHP 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/ Programação para Web
Principais frameworks PHP: Symfony 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/ Programação para Web
Titan Framework 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 Programação para Web
Titan Framework - Características 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 Programação para Web
Titan Framework - Arquitetura Núcleo (Core) independente e imutável em função de instâncias Desenvolvimento e aprimoramento constante, mas legado Programaçã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