Esclarecendo Algumas Dúvidas Corriqueiras
- Nao confundem! PHP != HTML != JavaScript
- PHP é uma linguagem de programação server-side (roda no servidor)
- JavaScript é uma linguagem de programação client-side (roda no cliente / browser)
- HTML é linguagem de Marcação (Markup Language)
- O foco deste minicurso é apenas PHP, apesar de utilizarmos tags HTML na nossa aplicação exemplo
Um pouco de História
- No início da internet todos os programas rodavam em CGI, escritos em C/C++ ou Perl
- Escrever programas nestas linguagens para rodar na web era muito despendioso, exatamente por misturar código da linguagem com HTML
- Criada por Rasmus Lerdorf, inicialmente chamada de Personal Home Page Tools, PHP surgiu como macros em C que otimizavam algumas rotinas básicas na programação para web.
- Liberada para a comunidade em 1995 sob a licença GPL, seu principal apelo era "Permite Criar um GuestBook em 2 mintuos", teve a adoção e colaboração de muitos desenvolvedores no mundo inteiro
- Atualmente mantida pela Zend e pela comunidade, o PHP (renomeada para Hipertext Preprocessor) se encontra na versão 5.0, cuja a principal característica foi a ampliação do suporte a Orientação a Objetos
[any material that should appear in print but not on the slide]
Porquê devo aprender PHP?
- Oras, não sou eu quem deve te convencer a aprender PHP, mas confesso que vou tentar...
- Linguagem de programação criada especialmente para Internet.
-
Milhares de páginas na internet foram escritas em PHP, alguns exemplos:
- Milhares de softwares Desktop estao sendo migrados para plataforma WEB (Você duvida disso?)
- Licenca Gratuita
- Multi-Plataforma (Windows, Linux)
- Suporte a vários Banco de Dados
[any material that should appear in print but not on the slide]
Conceitos e Características da Linguagem
Caramba, não enrole, eu quero programar!
Estamos Quase lá... Sintaxe Básica
- O interpretador identifica o código php dentro das seguintes tags
<? comandos ?>
- Todo final de instrução é delimitada por (;) ponto-vírgula
<? minha instrução; ?>
- Alocando Variáveis - toda varíavel começa com o caracter $ (dólar/cifrão) e uma string começando com uma letra ou '_'
<? $variavel = 10; // certo; ?>
<? $_variavel = 10; // certo; ?>
<? $2variavel = 10; // errado; ?>
- Comentários -
<? $variavel = 10; // comentário inline ?>
<? /* comentário em bloco */ $variavel = 10; ?>
[any material that should appear in print but not on the slide]
Ufa... Até que enfim, "Olá Mundo..."
- Comandos de Saída
- Para imprimir na tela, podem ser usados os seguintes comandos
- Exemplos:
<? echo "Olá Mundo"; // imprime a string Olá Mundo ?>
-
<? $variavel = 10;
echo $variavel; // imprime na tela 10?>
-
<? $variavel = 10;
print $variavel; // imprime na tela 10?>
- Outra forma mais elegante para imprimir variáveis
-
<? $nome = "Marcelo Linhares"; $idade = 22; ?>
Meu nome é <?=$nome ?>, tenho <?=$idade ?>
[any material that should appear in print but not on the slide]
Comandos de Entrada - QueryString
- QueryString são parâmetros passados para para o PHP via GET (pela URL)
- http://localhost/exibeServico.php?id=10
- Automaticamente o script exibeServico.php recebe uma variável chamada $_GET[‘id’] que contém o valor 10.
- É possível passar mais variáveis por querystring utilizando a sintaxe & (e comercial), porém o limite de dados passados via GET é de 5000 bytes.
- http://localhost/exibeServico.php?id=10&contato=Marcelo
- No exemplo acima o script exibeServico.php está recebendo duas variáveis, a variável $_GET[‘id’] e a variável $_GET[‘contato’]
[any material that should appear in print but not on the slide]
Comandos de Entrada - Formulários (Método POST)
- Dados podem ser enviados para um script PHP através de formulários HTML.
-
Neste exemplo, duas variáveis serão enviadas para o script exibeServico.php via POST.
São elas:
$_POST[‘id’] e $_POST[‘cidade’]
[any material that should appear in print but not on the slide]
Operadores
- Aritméticos (Apenas variáveis numéricas)
- + Adição
- - Subtração
- * Multiplicação
- / Divisão
- % Módulo
- de Strings;
- Comparação (retornam sempre valor booleano);
- == Igual
- != diferente de
- < menor que
- > maior que
- <= menor ou igual a
[any material that should appear in print but not on the slide]
Comandos Condicionais
- If-Else
-
<?
if ($universidade==”PUC”) {
echo “Universidade BOA, ”;
echo “Boa sorte no vestibular”;
}
else {
echo “não conheço esta universidade, cuidado! Existem muitas faculdades picaretas por aí”;
}
?>
-
Existe outra sintaxe para escrever If-Else no PHP, sem a utilização de chaves, através da utilização de ‘:’ dois pontos e do comando ‘endif’;
-
<? if ($universidade==”PUC”):
echo “Universidade BOA, ”;
echo “Boa sorte no vestibular”;
else :
echo “não conheço esta universidade, cuidado! Existem muitas faculdades picaretas por aí”;
endif; ?>
[any material that should appear in print but not on the slide]
Comandos Condicionais
- Switch
- O comando switch do PHP é semelhante a de outras linguagens
-
<?php
$tempo = "calor";
switch($tempo){
case "frio":
echo "Humm.. coloca uma blusa de frio";
break;
case "calor":
echo "Que tal uma cerveja?" ;
break;
}
?>
[any material that should appear in print but not on the slide]
Laços de Repetição
- While
-
<?php
$i =0;
while ($i < 10){
$i++;
}
$i=0;
while ($i < 10): // Outra forma de escrever (assim como o if)
$i++;
endwhile;
?>
[any material that should appear in print but not on the slide]
Laços de Repetição
[any material that should appear in print but not on the slide]
Funções
- Sintaxe semelhante a de C++
-
<? function soma($numero_um,$numero_dois) {
return $numero_um + $numero_dois;
};
echo soma(15,30); // imprime 45
?>
- Pode retornar algum valor ou simplesmente executar algo
- Passagem de parâmetros podem ser realizadas por valor ou por referência (passando o endereço da variável - &)
- Acessa variáveis globais não passadas por parâmetro (através da sintaxe global)
[any material that should appear in print but not on the slide]
Classes
- Sintaxe de declaração
Class nomeObjeto() {... }
- Instanciado através da sintaxe new
- Atributos inicializados com a sintaxe var
- Atributos referenciados pela sintaxe $this->nomeAtributo
<?php
class CarrinhoCompras{
var $itens; // atributo
function CarrinhoCompras(){ $this->itens = 0; } // construtor
function adicionaItem(){ $this->itens++; } // métodos
function retiraItem(){ $this->itens--; }
function obtemItens(){ return $this->itens; }
}
$compra = new CarrinhoCompras();
$compra->adicionaItem();
$compra->adicionaItem();
echo "numero de ítens -> " .$compra->obtemItens();
?>
[any material that should appear in print but not on the slide]
Arrays
- Pode ser criada de duas formas (como função ou atribuição)
- Exemplo
<?php
$musicas = array(); // instanciando o array
$musicas[0] = “Na boquinha da garrafa”
$musicas = array(“Na boquinha da garrafa”)
?>
[any material that should appear in print but not on the slide]
Arrays Associativas
- Pode ser criada de duas formas (como função ou atribuição)
- Exemplo
<?php
$curso_professor = array(“Theldo”=>”ATP2”,”Tirelo”=>”AED2” );
$curso['Theldo '] = “ATP2”;
print_r($curso); // imprime os valores do array?>
[any material that should appear in print but not on the slide]
Integrando com Banco de Dados
- Uma das vantages do PHP é suporte a conexão nativa com vários Banco De Dados (MySQL, PostgreSQL, Microsoft SQL Server e Oracle)
- Sintaxe de Conexão com o MySQL
-
<?php
mysql_connect("localhost","usuario","senha");
// conectando com o servidor
mysql_select_db("Usuarios");
// escolhendo o database
?>
[any material that should appear in print but not on the slide]
Executando consultas no MySQL
-
<?php
mysql_connect("localhost","usuario","senha") or die(mysql_error());;
mysql_select_db("db_sistema");
$sql = “SELECT * FROM Usuarios”;
$result = mysql_query($sq) or die(mysql_error()); // executa a consulta no mysql
while($r = mysql_fetch_assoc($result)) { // percorre todos os resultados retornado
echo $r['nome']; // imprimindo
}
?>
- Algumas funções para trabalhar com MySQL
-
mysql_insert_id(); // retorna o último ID (campos auto-increment) gerado na última operação INSERT
mysql_num_rows(); // retorna o número de linhas retornados de uma consulta (Operação Select)
mysql_error() ; // Retorna a mensagem de erro da última operação realizada no mysql
mysql_fetch_array(); // retorna o próximo registro da consulta em um array
mysql_fetch_close(); // fecha a conexão com o servidor de banco de dados
[any material that should appear in print but not on the slide]
Eu quero criar um blog, como faço?
[any material that should appear in print but not on the slide]
Blog: Meu banco de dados
- DER do Banco de Dados

- SQL do Banco
-
CREATE TABLE posts (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(65) NULL,
text VARCHAR(255) NOT NULL,
date INTEGER UNSIGNED NULL,
author VARCHAR(75) NULL,
PRIMARY KEY(id)
);
- Crie um database chamado 'blog' no MySql e crie uma tabela posts (utilize o sql acima)
[any material that should appear in print but not on the slide]
Blog: Minha Aplicação
- Conectando a aplicação com banco de dados
- Crie um arquivo chamado config.php com o seguinte código
-
<?
$usuario = "root"; // usuário do banco
$senha = ""; // senha do banco
$endereco = "localhost"; // endereço do banco
$conexao = mysql_connect($endereco,$usuario,$senha) or die ("Erro ao tentar efetuar conexão com o banco");
mysql_select_db("blog"); // selecionando o banco de dados
?>
- Este arquivo será incluído em todas as páginas que tiver uma conexão com o banco
- Qual a vantagem de criar um arquivo de conexão separado?
[any material that should appear in print but not on the slide]
Blog : Página Principal (Listagem e Adição)
- A nossa página principal irá listar todos os posts e fornecer uma interface de cadastro
- Para listar os posts
-
$result = mysql_query("SELECT * FROM posts",$conexao) or die (" ERRO na consulta " . mysql_error()); // seleciona todos os posts
-
<? while($post = mysql_fetch_array($result)) :?>
<h2><?=$post['title']?></h2>
<?=$post['text'] ?><br />
<p>Publicado por <?=$post['author'] ?>, dia <?=date("d-m-y",$post['date']) ?> </p>
<? endwhile; ?>
[any material that should appear in print but not on the slide]
Blog : Adicionando Post
- Na mesma página index.php, vamos colocar o formulário HTML para inserir o post
-
<form action="adicionar.php" method="post">
<p>
<label for="id_titulo">Título</label>
<input type="text" name="titulo" id="id_titulo" size="40" />
</p>
<p>
<label for="id_texto">Texto Completo</label>
<textarea id="texto" name="texto" rows="10" cols="30"></textarea>
</p>
<p>
<label for="id_autor">Autor</label>
<input type="text" name="autor" id="id_autor" size="40" />
</p>
<p>
<input type="submit" value="Enviar Post" class="bt" />
</p>
</form>
[any material that should appear in print but not on the slide]
Blog : Arquivo adicionar.php
- Este arquivo receberá os parâmetros via POST da index.php e cadastrará o registro no banco
-
<?
include "config/config.php";
$titulo = $_POST['titulo'];
$texto = $_POST['texto'];
$autor = $_POST['autor'];
$data = mktime();
$sql = "INSERT INTO posts (title,text,date,author) Values ('$titulo','$texto',$data,'$autor')";
if(mysql_query($sql)) : ?>
Post Cadastrado com sucesso<a href="index.php">Voltar</a>
<? else: ?>
Erro ao tentar cadastrar post, <a href="index.php">Voltar</a>
<? endif; ?>
[any material that should appear in print but not on the slide]
Blog : Deletando Posts
- A parte de deleção de posts vocês conseguem fazer sozinho ;-)
- Apenas uma dica
-
<?
$id = $_GET['id'];
$sql = "DELETE FROM posts Where id = $id";
if(mysql_query($sql)) : ?>
Post Deletado com sucesso<a href="index.php">Voltar</a>
<? else: ?>
Erro ao tentar deletar post, <a href="index.php">Voltar</a>
<? endif; ?>
- Qualquer dúvida, baixe o blog exemplo criado para este curso
[any material that should appear in print but not on the slide]
Bem vindo a Blogosfera
- Que legal, você criou seu primeiro blog, se junte a uma comunidade de 3 milhões de pessoas e dissemine os seus conhecimentos
- Sugestão: Publique este seu trabalho em algum servidor gratuito (onde? procure no google, oras!), muitas empresas gostam de ver seus trabalhos online
[any material that should appear in print but not on the slide]
Falando de Produtividade
- Wikipedia define Framework como: "No desenvolvimento do software, um framework ou arcabouço é uma estrutura de suporte definida em que um outro projecto do software pode ser organizado e desenvolvido. Tipicamente, um framework pode incluir programas de apoio, bibliotecas de código, linguagens de script e outros softwares para ajudar a desenvolver e juntar diferentes componentes do seu projecto"
- Atualmente é inviável começar um grande projeto (Atenção, estamos falando de grandes projetos, não simples scripts...) sem a utilização de um bom framework
[any material that should appear in print but not on the slide]
Mais Sobre Frameworks
- Com a utilização de framework no desenvolvimento de um software obtêm-se as seguintes vantagens:
- Maximização de re-uso (análise, design, código, testes);
- Desenvolvedores se concentram em adicionar valor em vez de reinventar a roda;
- Menos manutenção;
- Estabilização melhor do código (menos defeitos) devido ao uso em várias aplicações;
- Melhor consistência e compatibilidade entre aplicações;
[any material that should appear in print but not on the slide]
Frameworks "Padrões de Mercado"
- Existem diversas frameworks para desenvolvimento WEB em PHP, abaixo algumas conhecidas que utilizam o pattern MVC (Model View Controller)
- Zend Framework;
- CakePHP;
- Simfony;
- Prado;
[any material that should appear in print but not on the slide]
Quero saber mais, como faço?
- Não se esqueça, o Google é seu amigo ;-);
- PHP.net, portal oficial da linguagem, centenas de funções documentadas;
- Participe de listas de discussão, interaja;
- Existem alguns livros de PHP na biblioteca da PUC, reserve o seu;
[any material that should appear in print but not on the slide]
Referências
[any material that should appear in print but not on the slide]
Meus agradecimentos a:
- Instituto de Informática (Profa. Lucila Ishitani, Gisele Brugguer, Cristiano Veronez)
- Coordenação de Sistemas de Informação de Guanhães (Prof. Marcelo Nery, Profa. Viviane)
- Equipe da Agência Detalhes
[any material that should appear in print but not on the slide]