Navegador/Browser Chrome / Firefox / Internet Explorer / Opera / (outros) SERVIDOR HTTP Apache IIS (outros) index.html Página estática HTML arquivos figura.jpg animacao.swf texto.pdf imagens outras mídias index.php index.asp página dinâmica PHP / ASP Banco de dados Sistema de arquivos Servidor de correio ??? HTML imagem PDF outras mídias
Endereço do Servidor : porta (normalmente seu nome de host/domínio) (a porta é opcional) Recurso no servidor (no caso de serviços Web, diretório/arquivo) http://www.dominio.com.br/cursos/teste.html
para comunicação entre computadores Padrão de requisição e resposta Independência de suas plataformas, ambientes, linguagens de programação Protocolos comuns em servidores Web: HTTP e HTTPS (site seguro com SSL)
: Porta Geralmente um endereço DNS em FQDN (Fully Qualified Domain Name - Nome de Domínio Plenamente Qualificado) Também pode ser o endereço IP Porta padrão para HTTP: 80 Porta padrão para HTTPS: 443
no Apache2: /var/www/ c:\xampp\htdocs ...então a URL http://localhost/cursos/teste.html ...abre o arquivo: /var/www/cursos/teste.html c:\xampp\htdocs\cursos\teste.html
arquivo “padrão” para índice de diretório ou Arquivo procurado dentro do diretório quando é omitido o nome arquivo na URL Padrões: index.html index.php
desenvolvimento web • Disponível para Windows, Linux, MAC • **NÃO** é aconselhado para ambiente de produção! • XAMPP Lite 1.7.3 – versão reduzida • Apache 2.2.14 (IPv6 enabled) • MySQL 5.1.41 + PBXT engine • PHP 5.3.1 • PhpMyAdmin 3.2.4 • XAMPP Control Panel 2.5.8 • … e mais algumas coisinhas • http://www.apachefriends.org/pt_br/xampp.html
Término de comando (ponto e vírgula) ERRO!! Parse error: syntax error, unexpected T_ECHO in /var/www/teste/teste.php on line 3 EXCEÇÃO: Estruturas de controle
uma única linha, echo "teste"; // ou até o final da linha # Comentário de uma única linha, ou até o final da linha (pouco usado) /* Comentário em múltiplas linhas */ ?>
case 'a': comando1; break; case 'b': case 'c': comando2; break; case 'd': default: comando3; break; } <?php switch ($teste) { case 'a': echo 'Ahhhh'; break; case 'b': case 'c': echo 'boca'; break; case 'd': default: echo 'dentes'; break; }
entre uma variável e um valor if ($teste != 50) Comparação entre uma variável e outra variável if ($teste == $outro) Comparação entre uma variável e um cálculo if ($teste >= $outro + 50 + count($matriz)) Saída true/false de um comando if (is_array($teste)) Verificação do valor de uma variável if ($teste)
valor e tipo if ($teste === 50) Testando se atribuição é verdadeira if ($teste = mysqli_fetch_row($result)) Uso do AND (&&) if ($teste == 50 && $outro > 20) Uso do OR (||) if ($teste == 50 || $outro > 20) Negação if (!$teste)
$arg_2, /* ..., */ $arg_n) { echo "Exemplo de função"; return $valor_retornado; } Lista de parâmetros ou argumentos (entre parênteses) Abertura Palavra chave Fechamento Nome da função Retorno opcional de valores Comandos
mostrarTitulo ($numero) { echo "<h1>Capítulo $numero</h1>\n"; } mostrarTitulo(1); $titulo = '2'; mostrarTitulo($titulo); ?> Parâmetro obrigatório Chamando a função passando o parâmetro com e sem uso de variável <h1>Capítulo 1</h1> <h1>Capítulo 2</h1>
escopo de uma variável é o contexto onde ela foi definida • Variáveis definidas dentro da função só são visíveis dentro da função • Variáveis definidas fora da função não estão disponíveis para a função • Variáveis SuperGlobais do PHP estão disponíveis em qualquer lugar
métodos de uma classe. Só são vistos os métodos e atributos públicos sem a necessidade de saber qual sãoimplementados Público Visível por todos Protegido Visível pelas classes pai e filhas Privado Visível apenas pela própria classe
protected $nome; private $sexo = 'M'; public $dataNascimento; public function getNome() { return $this->nome; } public function setNome($nome) { $this->nome = $nome; } } Atributos $this auto-referência dentro do escopo de OBJETO GETTER SETTER Declaração da Classe
Pessoa { public $disciplina; public function getDisciplina() { return $this->disciplina; } public function setDisciplina($disciplina) { $this->nome = '$disciplina'; } public function setNome($nome) { $this->nome = "Professor $nome"; } } SOBRECARGA
{ $this->nome = $nome; } public function __toString() { return $this->nome; } public function __get($name){ return $this->$name; } public function __set($name, $value){ $this->$name = $value; } Retorno como String Construtor da classe GETTER SETTER
attribute1=”foo” attribute*n=”bar” > VALOR </tag> <tag attribute1=”foo” attribute*n=”foo” /> • Abertura TAG • Atributo 1 • Atributo * n • Fechamento da TAG • VALOR • Final da TAG • Abertura TAG • Atributo 1 • Atributo * n • Fechamento/Final da TAG
enviado no corpo do request ("oculto") • GET é "bookmarkable" (permite adicionar aos favoritos) • POST permite multipart/data (envio de arquivos anexos) • POST permite envio de grande quantidade de dados
(*) de dados padrão do PHP 5 • Permite a construção de aplicações multibanco • Acesso Orientado a Objeto ou procedural (*) Camada de Abstração é uma biblioteca que permite acesso padronizado a vários recursos semelhantes, mas com acesso e manipulação diferente, como bancos de dados.
Microsoft SQL Server and Sybase • Firebird/Interbase • IBM / DB2 • Informix • MySQL • Oracle (experimental) • PostgreSQL • SQLite • Driver 4D for PDO • ODBC (acesso a vário outros bancos que possuam driver odbc )
Conexão utilizando DSN = Data Source Name // Exemplo com MySQL $dsn = 'mysql:host=localhost;dbname=banco'; // Exemplo com Postgres $dsn = 'pgsql:host=localhost;dbname=banco'; // A conexão em si $conexao = new PDO($dsn, 'user', 'password');
FROM pessoa WHERE id = ??? <?php // (...) conexão anteriormente realizada $id = 50; $sql = "SELECT * FROM pessoa WHERE id = $id"; $resultado = $conexao->query ($sql);
* FROM pessoa WHERE nome = '???' <?php // (...) conexão anteriormente realizada $nome = 'João'; $sql = "SELECT * FROM pessoa WHERE nome = '$nome'"; $resultado = $conexao->query($sql);
GET SELECT * FROM pessoa WHERE nome LIKE '%???%' <?php // (...) conexão anteriormente realizada // POST $sql = "SELECT * FROM pessoa WHERE nome LIKE '%{$_POST['nome']}%'"; // GET $sql = "SELECT * FROM pessoa WHERE nome LIKE '%{$_GET['nome']}%'"; $resultado = $conexao->query($sql);
GET UPDATE pessoa SET nome='???', sexo='???' WHERE id = ???) <?php // (...) conexão anteriormente realizada $sql = "UPDATE pessoa SET nome='{$_POST['nome']}', sexo='{$_POST['sexo']}' WHERE id = {$_POST['id']})"; // ou $sql = "UPDATE pessoa SET nome='{$_GET['nome']}', sexo='{$_GET['sexo']}' WHERE id = {$_GET['id']})"; $resultado = $conexao->exec ($sql);
FROM pessoa WHERE id = ??? <?php // (...) conexão anteriormente realizada $id = 50; $sql = "DELETE FROM pessoa WHERE id = $id"; $resultado = $conexao->exec($sql);
GET DELETE FROM pessoa WHERE id = ??? <?php // (...) conexão anteriormente realizada $sql = "DELETE FROM pessoa WHERE id = {$_POST['id']}"; // ou $sql = "DELETE FROM pessoa WHERE id = {$_GET['id']}"; $resultado = $conexao->exec($sql);
a operação básica num banco de dados • C = Create = Criar registro • R = Retrieve = Recuperar ou Listar rgistros • U = Update = Atualizar registros • D = Delete = Excluir registros