SlideShare une entreprise Scribd logo
1  sur  85
Télécharger pour lire hors ligne
Server Side
PHP, MVC, MySQL E AJAX




Prof: Sérgio Souza Costa
Roteiro
Linguagens e framework
    PHP e um simples MVC
A linguagem PHP
    PHP + MySQL

PHP + MySQL + MVC

    PHP + MySQL + MVC + AJAX
Controle de sessão e cookies
Linguagens são compostas por sintaxe,
semântica e pragmática. Em computação
ele deve ser universal e implementável.
Linguagens são compostas por sintaxe,
semântica e pragmática. Em computação
ele deve ser universal e implementável.


Framework é um conjunto de objetos que
colaboram com o objetivo de atender um
conjunto de responsabilidades para uma
aplicação específica ou um domínio de aplicação
(Erick Gamma, 1995)
Linguagens             Framework

    JAVA               J2EE (JSF, STRUTS...)
    RUBY                   ON RAILS
    PHP                Zend, CakePHP...
C#, Visual Basic ...        .NET
    Perl                   Catalyst
   C++                     CppCMS
  Python                 Django, Zope
  Haskell              SNAP,Happstack
Frameworks
●   Disciplina
●   Simplificação
●   Agilidade / Rapidez
●   Padrões de desenvolvimento / Design
    Pattern
●   Organização
●   Menos código
●   Conjunto de utilitários
Frameworks
                             Similar as metodologias de
●   Disciplina               engenharia de software, se
                             ficar muito “burocratico”,
●   Simplificação            pode tornar lento o
●   Agilidade / Rapidez      processo. Isso será mais
                             perceptível em pequenos
●   Padrões de desenvolvimento / Design
                             projetos

    Pattern
●   Organização
●   Menos código
●   Conjunto de utilitários
Frameworks nos “ensinam” a boa prática de
desenvolvimento

Framework é muito mais que uma biblioteca,
é o resultado da experiência de varias
profissionais, concretizada em um software.

Esta experiência é descrita através dos
padrões de projetos, que nos ENSINOU a
desenvolver. Porem usar padrões requere
experiência, os frameworks nos ajudam
nisso.
Qual melhor ?
Qual melhor ?
Em muitos casos, escolhemos uma tecnologia pela
tendência e não por critérios quantitativos.


Não existe a melhor.
Grandes empresas usam muito mais que uma
tecnologia, usualmente se baseiam em soluções
hibridas, java, php, c++ ....
PHP é a tecnologia base:

               Wikipedia
 Facebook

     Yahoo            IBM

            Apple     Nasa
Java != PHP
Java != PHP
    São duas tecnologias bem distintas.
●
    Java vai muito além do que se propõe o PHP.
●
    Java pode substituir o PHP, o contrário não é
●
    possível
Tiobe index não representa a realidade,
nenhum indicador na verdade é capaz
disso. Ele apenas é um indicador que
pode mostrar uma “tendência”.
Java era “modismo” ?   O “mundo”
                       é mais que
                       java e php,
                       ☺




  "Ninguém"
  queria usar
  PHP,
  observa
  que isso
  era em
  2002, 10
  anos atrás.
Server
side




Client
side
Mantenham a cabeça aberta, livrem-se de seus
preconceitos




 Prendam se a conceitos, não a linguagens e
 frameworks
Mantenham a cabeça aberta, livrem-se de seus
preconceitos
                                       Aprender
                                       novas
                                       linguagens é
                                       uma boa
                                       forma de
                                       treinar e se
                                       prepararem
                                       para
                                       aprender.




 Prendam se a conceitos, não a linguagens e
 frameworks
PHP
               Guia rápido

http://www.php.net/manual/pt_BR/
Ciclo de vida
PHP (um acrônimo recursivo para PHP: Hypertext
Preprocessor) é uma linguagem de script open source de
uso geral, muito utilizada e especialmente guarnecida para o
desenvolvimento de aplicações Web embútivel dentro do
HTML.
PHP (um acrônimo recursivo para PHP: Hypertext
Preprocessor) é uma linguagem de script open source de
uso geral, muito utilizada e especialmente guarnecida para o
desenvolvimento de aplicações Web embútivel dentro do
HTML.

O código PHP é delimitado pelas tags
<?php
....
?>
Ou
<?= expressao ?>
Imprimir HTML tags em PHP = bad style
PHP expression block: good way

Formato: <?= expression ?>


<!DOCTYPE html>
<html>
<head>                           ola.php
<meta charset="utf-8" />
<title></title>
</head>
<body>
   <p> <?= "Ola Mundo" ?> </p>
</body>
</html>
PHP Frameworks
MVC            Objeto relacional   Testes
CakePHP                            PHPUnit
                    CakePHP
                                     lime
Zend                 PROPEL
Simphony2            Doctrine
Code igneter
Antes de vermos detalhes da
 LINGUAGEM, veremos um exemplo
 simples de um MVC sem o auxilio de
 frameworks.

Baixem o arquivo.
Exemplo usado de: http://php-html.net/tutorials/model-view-controller-in-php/



     Model View Controler




   Simplificado, pressuposto -> cliente através da
   Web.
Index.php


<?php
  include_once("controller/Controller.php");
     $controller = new Controller();
     $controller->invoke();
?>
controller.php
class Controller {
    public $model;
    public function __construct() {
     $this->model = new Model();                            MODEL
  }
    public function invoke() {
        if (!isset($_GET['book'])) {
               // no special book is requested, we'll show a list of all available
books
               $books = $this->model->getBookList();
               include 'view/booklist.php';                                View 1
        }
        else{
               // show the requested book
               $book = $this->model->getBook($_GET['book']);
               include 'view/viewbook.php';
        }                                                                  View 2
    }
}
book.php


class Book {
     public $title;
     public $author;
     public $description;
     public function __construct($title, $author, $description)   {
              $this->title = $title;
         $this->author = $author;
         $this->description = $description;
   }
}
model.php
                                                  Simulando um
class Model {                                     banco
    public function getBookList()
    {
         return array(
              "Jungle Book" => new Book("Jungle Book", "R. Kipling", "A classic
book."),
              "Moonwalker" => new Book("Moonwalker", "J. Walker", ""),
              "PHP for Dummies" => new Book("PHP for Dummies", "Some
Smart Guy", "")
         );
    }

    public function getBook($title)
    {                                              Simulando um
        $allBooks = $this->getBookList();          “select”
        return $allBooks[$title];
    }


}
booklist.php
….
<tr><td>Title</td><td>Author</td><td>Description</td></tr>
<?php foreach ($books as $title => $book) { ?>
<tr>
<td><a href="index.php?book=<?=$book->title?>"><?=$book->title?></a></td>
     <td><?=$book->author?></td>
     <td><?=$book->description?></td>
</tr>
<?php } ?>….

                                      Baixem e experimente estes
viewbook.php                          códigos.
<html>
<head></head>
<body>
<p> Title: <?= $book->title ?> </p>
<p> Author: <?= $book->author ?> </p>
<p> Description: <?= $book->description ?> </p>
</body>
</html>
PHP - Linguagem
Imperativa
               Dinâmica

Orientada a objeto

        Estilo funcional
Variáveis

As variáveis no PHP são representadas por um cifrão
($) seguido pelo nome da variável. Os nomes de
variável no PHP fazem distinção entre maiúsculas e
minúsculas.


Um nome de variável válido se inicia com uma letra ou
sublinhado, seguido de qualquer número de letras,
algarismos ou sublinhados.
Variáveis e atribuição
<?php
   $var = 'Bob';
   $Var = 'Joe'; // case sensitive, $var e diferente de $Var
   echo "$var, $Var";      // exibe "Bob, Joe"
   $4site = 'not yet'; // inválido; começa com um número
   $_4site = 'not yet'; // válido; começa com um sublinhado
   $täyte = 'mansikka'; // válido; 'ä' é um caracter ASCII
     (extendido) 228
   $var = 10; // dinamico
   $var += 5; // soma o valor de $var a 5 e atribui a $var
   $var /= 2; // divide o valor de $var por 2 e atribui a $var
?>
Constante
Constantes são valores que são declarados e não podem
ser alterados durante a sua execução. Para definir uma
constante utilizamos a função define

   <?php
      define("CONSTANTE", "Alô Mundo.");
      define("SALARIOMINIMO", 1000);
      define("DIRETORIOHOME", "/home");
   ?>
Valores e tipos

Primitivos   Especiais   Compostos:
boolean      resource    array
integer      NULL        Object
Float
string
Booleanos
Este é o tipo mais simples. Um booleano expressa
um valor verdade. Ele pode ser TRUE ou FALSE.


Para especificar um literal booleano, use as
palavras-chave TRUE ou FALSE. Ambas são
case-insensitive.

<?php
    $variavel = True; // atribui o valor True para
$variavel
?>
Ponto flutuante

Números de ponto flutuante (também conhecidos como
"floats", "doubles" ou "números reais") podem ser
especificados utilizando qualquer uma das seguintes
sintaxes:

<?php
   $a = 1.234;
   $b = 1.2e3;
   $c = 7E-10;
?>
String
Uma string é uma série de caracteres.

PHP não impõe limite de tamanho de uma
string; o único limite é o de memória disponível
do computador no qual o PHP está sendo
executado.
<?php
    echo 'isto é uma string comum';
    echo 'Você pode incluir novas linhas em strings, dessa
maneira que estará
tudo bem';
?>
Array
Um array no PHP é um mapa ordenado.
Um mapa é um tipo que relaciona valores para chaves.

 array( chave => valor
     , ...
     )
 // chave pode ser tanto string ou um integer
 // valor pode ser qualquer coisa


 <?php
    $arr = array("foo" => "bar", 12 => true);
    echo $arr["foo"]; // bar
    echo $arr[12]; // 1
 ?>
Objeto

Um Objeto pode ser criado com o construtor de
linguagem new

 <?php
 class foo
 {
    function do_foo() {
      echo "Doing foo.";
    }
 }

 $bar = new foo;
 $bar->do_foo();
 ?>
Objeto                             Veremos sobre
                                   classes em
                                   PHP mais a
Um Objeto pode ser criado com o construtor de
                                   frente
linguagem new

<?php
class foo
{
   function do_foo() {
     echo "Doing foo.";
   }
}

$bar = new foo;
$bar->do_foo();
?>
Resources
Um recurso é uma variável especial, que mantém
uma referência a um recurso externo.

Recursos são criados e usados por funções
especiais.

<?php
   $result = mysql_connect("localhost", "username", "pass");
?>
Null
Valor especial NULL representa que a variável não
tem valor. NULL é o único valor possível do tipo
NULL.
A variável é considerada null se:
   1. ela foi assimilada com a constante NULL.
   2. ela não recebeu nenhum valor ainda.
   3. ela foi apagada com unset().
Type casting
A conversão de tipos no PHP funciona como no C: o
nome de um tipo desejado é escrito entre parênteses
antes da variável em que se deseja a moldagem.

(int), (integer) - molde para inteiro
(bool), (boolean) - converte para booleano
(float), (double), (real) - converte para número de
ponto flutuante
(string) - converte para string
(array) - converte para array
(object) - converte para objeto
(unset) - converte para NULL (PHP 5)
Recebendo dados de uma
requisição
Para receber os dados de uma requisição, usamos
variáveis pré-definidas pelo PHP ($_POST ou
$_GET), conforme o método de envio utilizado no
formulário.
<?php
   //neste caso temos no formulário um campo chamado nome e
   método de envio POST
   $nome = $_POST['nome'];
   //neste caso temos no formulário um campo chamado nome e
   método de envio GET
   $nome = $_GET['nome'];
   $nome = $_REQUEST['nome']; // contem ambos

?>
Respondendo uma
requisição
Uma resposta do servidor será em geral um texto,
estruturado no formato HTML, XML, JSON, texto puro
e etc

<?php
   $nome = $_REQUEST['nome'];
   echo "respondendo ao ". $nome;
?>
Operadores unários

Operadores   Descrição
++$a         Pré-incremento. Incrementa $a em um e, então, retorna
             $a;
$a++         Pós-incremento. Retorna $a e, então, incrementa $a em
             um.
--$a         Pré-decremento. Decrementa $a em um e, então,
             retorna $a;
$a--         Pós-incremento. Retorna $a e, então, decrementa $a
             em um.
Operadores aritméticos


Operadores          Descrição
+                   Adição
-                   Subtração
*                   Multiplicação
/                   Divisão
%                   Módulo (resto da divisão)
Operadores relacionais

Operadores   Descrição
==           Igual. Resulta verdadeiro (TRUE) se expressões forem
             iguais
===          Idêntico. Resulta verdadeiro (TRUE) se as expressões
             forem iguais e do mesmo tipo de dados.
!= ou <>     Diferente. Resulta verdadeiro se as variáveis forem
             diferentes.
<            Menor que.
>            Maior que.
<=           Menor ou igual.
>=           Maior ou igual.
Operadores lógicos


Operadores    Descrição
($a and $b)   E: Verdadeiro (TRUE) se tanto $a quanto $b forem
              verdadeiros
($a or $b)    OU: Verdadeiro (TRUE) se $a ou $b forem verdadeiros
($a xor $b)   XOR: Verdadeiro (TRUE) se $a ou $b forem verdadeiros, de
              forma exclusiva.
(! $a)        NOT: Verdadeiro (TRUE) se $a for false.
($a && $b)    E: Verdadeiro (TRUE) se tanto $a quanto $b forem
              verdadeiros
($a || $b)    OU: Verdadeiro (TRUE) se $a ou $b forem verdadeiros
Controle de fluxo
Seleção                            Iteração
<?php                             $i = 1;
if ($a > $b) {                    while ($i <= 10) {
    echo "a is bigger than b";       echo $i++;
} elseif ($a == $b) {             }
    echo "a is equal to b";
} else {
    echo "a is smaller than b";   for ($i = 1; $i <= 10; $i++) {
}                                    echo $i;
?>                                }

switch ($i) {
  case 0:                         foreach ($arr as $key => $value) {
     echo "i equals 0";              echo "Key: $key; Value: $value<br />n";
  case 1:                         }
     echo "i equals 1";
  case 2:
     echo "i equals 2";
}
“Incluindo” arquivos

Include, inclui e avalia o arquivo informado. Se o
arquivo não existir produzirá uma mensagem de
advertência (warning).

include_once, garante que será avaliado apenas
uma vês.
require, similar ao include, porem produz uma
mensagem de Fatal Error caso o arquivo não exista.

require_once, garante que será avaliado apenas
uma vês.
PHP Orientado a objetos
Estilo orientado a objeto
# construi um objeto
$name = new ClassName(parameters);

# acessando um atribtuo
$name->fieldName

# chamando um método
$name->methodName(parameters);


$zip = new ZipArchive();
$zip->open("moviefiles.zip");
$zip->extractTo("images/");
$zip->close();
Sintaxe para declaração de classe

class ClassName {
    # atributos da classe
    public $name;          # atributos públicos
    private $name; # atributos privados
    # construtor da classe
    public function __construct(parameters) {
         statement(s);
    }

    # métodos – comportamento de cada objeto
    public function name(parameters) {
        statements;
    }
}
Sintaxe para declaração de classe

class ClassName {
    # atributos da classe
    public $name;          # atributos públicos
    private $name; # atributos privados
    # construtor da classe
    public function __construct(parameters) {
         statement(s);
    }

    # métodos – comportamento de cada objeto
    public function name(parameters) {
        statements;
    }
}
Exemplo
<?php
     class Point {
         public $x;
         public $y;
         # equivalent of a Java constructor
         public function __construct($x, $y) {
             $this->x = $x; $this->y = $y;
         }
         public function distance($p) {
             $dx = $this->x - $p->x;
             $dy = $this->y - $p->y;
             return sqrt($dx * $dx + $dy * $dy);
         }
         # equivalent of Java's toString method
         public function __toString() {
             return "(" . $this->x . ", " . $this->y . ")";
         }
    }
    $p1 = new Point (2,4);
    echo $p1;
?>
Herança

class ClassName extends ClassName {
   ...
}


class Point3D extends Point {
    public $z;
    public function __construct($x, $y, $z) {
         parent::__construct($x, $y);
         $this->z = $z;
    }
}

$p2 = new Point3D (4,5,6);
Interface
interface InterfaceName {
    public function name(parameters);
   public function name(parameters); ...
}

class ClassName implements InterfaceName{ ...



Classe abstrata
abstract class ClassName {
   abstract public function name(parameters);
   ...
}
Interface                       Possui similaridades,
                                porem classes
interface InterfaceName {       abstratas podem
    public function name(parameters); atribtutos e
                                possuir
   public function name(parameters); ... Ambas
                                construtores.
}                               nao são instanciaveis

class ClassName implements InterfaceName{ ...



Classe abstrata
abstract class ClassName {
   abstract public function name(parameters);
   ...
}
Integrando com o banco de dados
PHP + MySQL


Baixem o arquivo.
MySQL

Criem um banco chamado "bib", com uma
tabela chamada "books", com três
atributos (title, author and description)
Acessando MySQL                                  book.php

<body>
    <p> livros </p>
    <table>
    <?php
    $mysqli = new mysqli("localhost", "root", "", "bib");
    $result = $mysqli->query("SELECT * FROM books");
    while ($row = $result->fetch_object()) { ?>
    <tr>
    <td><?=$row->title ?></td>
    <td><?=$row->author ?></td>
    <td><?=$row->description ?></td>
    <?php } ?>
    </ul>
</body>
PHP + MVC + MySQL

Voltando ao simples MVC ....

Só mudaremos o Model.php,
o restante se mantêm


Baixem o arquivo.
Incluir um
Usando o MySQL                                        construtor, que
                                                      inicializa um objeto
                                                      para conexao com o
                                                      banco
public function __construct(){
    $this->mysqli = new mysqli("localhost", "root", "", "bib");
}

public function getBookList(){
    $result = $this->mysqli->query("SELECT * FROM books");
    $result_array ;
    while ($row = $result->fetch_object()) {

         $result_array[$row->title] =
                  new Book ($row->title, $row->author, $row->description);
    }
    return $result_array;
}

                                                  Array de objetos é montado a
                                                  partir do resultado da
                                                  consulta ao banco.
PHP + MVC + MySQL + AJAX




     Baixem o arquivo.
PHP + MVC + MySQL + AJAX

Usando o mesmo banco e projeto, podemos usar
apenas uma view. Ao clicar em um livro, fazemos uma
requisição, que retornará o objeto no formato JSON.




                          O conteúdo irá variar de acordo
                          com a seleção.
PHP + MVC + MySQL + AJAX
Incluimos um script, "bookdetail.php", que será
responsável por receber a solicitação e encaminhar a
resposta.

<?php
        require_once("../model/Model.php");
        $model = new Model();
        $book = $model->getBook($_REQUEST['book']);
        echo (json_encode ($book));
?>



                                                  requisição o titulo
                  resposta JSON                   do livro
PHP + MVC + MySQL + AJAX
                                                      Associado ao
                                                      click do texto
 $(".title").click( function () {
   $.getJSON(
                                               Requisição com
       "view/bookdetails.php",
                                               parametros
        {book:$.trim($(this).text())},
        function (response) {
           var $book_detail = $("<div/>")          Resposta, de
           $.each (response, function (i, item) { JSON já
                                                   convertida para
              $("<p/>",{
                                                   objeto JavaScript
                   text: (i + " : " + item)
                  }).appendTo($book_detail) ;
            }); // each
           $("#viewbook").html($book_detail)
        })
       })
})
Controle de Sessão

Baixem o arquivo
Controle de Sessão

Suporte a sessões no PHP consiste de uma maneira
de presevar dados através de acessos subsequentes.

Isso permite a criação de aplicações mais
personalizadas e aumenta o apelo do seu web site.



 Variáveis de sessão
sempre deverá ser chamada
                                   para tratar as variaveis de
Variáveis de sessão                sessões


sessao1.php
<?php
   session_start();                               Crio uma
   $_SESSION['nome'] = "sergio";                  variavel de
   echo $_SESSION['nome'];                        sessão
?>
Variáveis de sessão: Criando e acessando
sessao1.php
<?php
   session_start();
   $_SESSION['nome'] = "sergio";
   echo $_SESSION['nome'];
?>                                  sempre deverá ser
                                    chamada para tratar as
                                    variaveis de sessões
sessao2.php

<?php
                                   acessando uma
   session_start();                variável criada
   echo $_SESSION['nome'];         em outro
?>                                 contexto
Variáveis de sessão: Destruindo


<?php
   session_start();
   session_destroy();
?>
Nos exemplo, em sessao.zip,
encontraram um exemplo simples, de
uso de sessão para validar um login.
Cookies
Cookie, são dados no fomato (chave, valor) que podem ser
enviado para o cliente e que serão transmitidos entre todas
as futuras conexões, enquanto ele existir.
Cookies                                Em um dado contexto, um
                                       cookie pode ser enviado.



<?php
   setcookie ("nome", "sergio");
   echo "te mandei um cookie (nome, sergio)"
?>
Cookies                                    Em um dado contexto, um
                                           cookie pode ser enviado.



<?php
   setcookie ("nome", "sergio");
   echo "te mandei um cookie (nome, sergio)"
?>


<?php
   echo $_COOKIE['nome']." voce por aqui :)";
?>



                            Acessado em outro contexto.
Cookies              O cookie pode ter um tempo pre-
                     definido para expirar, um mês neste
                     exemplo.


<?php
   $expire=time()+60*60*24*30;
   setcookie("user", "Alex Porter", $expire);
?>
Conclusão
 PHP é uma linguagem leve, ágil, muito utilizada na web, e com muitos
 recursos que permite desenvolver software de qualidade.

      A agilidade do PHP, é o fato dela ser uma linguagem interpretada,
      tornando o processo de "implantação" muito mais fácil.

PHP deve ser considerada em projetos de aplicações Web,
principalmente em pequenos projetos e em protótipos.

      Contudo, mesmo em grandes projetos PHP continua sendo usado, por
      exemplo, Facebook.


 Dependendo das necessidades, existem diversos frameworks
 completos, para persistência, MVC e testes de unidade. Similarmente
 ao Java, possuem um conjunto de regras, arquivos de onfiguração ....

Contenu connexe

Tendances

Tendances (20)

Manual-de-php
Manual-de-phpManual-de-php
Manual-de-php
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantes
 
Guia php
Guia phpGuia php
Guia php
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Introdução ao PHP
Introdução ao PHPIntrodução ao PHP
Introdução ao PHP
 
Minicurso PHP básico
Minicurso PHP básicoMinicurso PHP básico
Minicurso PHP básico
 
Rumo à Certificação PHP
Rumo à Certificação PHPRumo à Certificação PHP
Rumo à Certificação PHP
 
Php e mysql aplicacao completa a partir do zero
Php e mysql   aplicacao completa a partir do zeroPhp e mysql   aplicacao completa a partir do zero
Php e mysql aplicacao completa a partir do zero
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Curso javascript básico
Curso javascript básicoCurso javascript básico
Curso javascript básico
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao php
 
Despertando para o PHP
Despertando para o PHPDespertando para o PHP
Despertando para o PHP
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 

En vedette

Strings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHPStrings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHPDaniel Arndt Alves
 
Palestra Flisol 2012 - Campinas
Palestra Flisol 2012 - CampinasPalestra Flisol 2012 - Campinas
Palestra Flisol 2012 - CampinasAnderson de Castro
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONAmbiente Livre
 
Cookies e Sessões e PHP
Cookies e Sessões e PHPCookies e Sessões e PHP
Cookies e Sessões e PHPHumberto Moura
 
Web Service and PHP, REST and SOAP
Web Service and PHP, REST and SOAPWeb Service and PHP, REST and SOAP
Web Service and PHP, REST and SOAPElwin Huaman
 
Como implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHPComo implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHPPablo Aguiar
 
Construindo uma Rede Social com PHP e Software Livre
Construindo uma Rede Social com PHP e Software LivreConstruindo uma Rede Social com PHP e Software Livre
Construindo uma Rede Social com PHP e Software LivreElton Minetto
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPRamon Ribeiro Rabello
 
Servicio y Consumo de Servicios REST en PHP
Servicio y Consumo de Servicios REST en PHPServicio y Consumo de Servicios REST en PHP
Servicio y Consumo de Servicios REST en PHPDavid J. Brenes
 
Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHPZoran Jeremic
 
Rest api design by george reese
Rest api design by george reeseRest api design by george reese
Rest api design by george reesebuildacloud
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no androidAlexandre Antunes
 
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxAlmir Neto
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONMarcio Junior Vieira
 

En vedette (20)

Strings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHPStrings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHP
 
Palestra Flisol 2012 - Campinas
Palestra Flisol 2012 - CampinasPalestra Flisol 2012 - Campinas
Palestra Flisol 2012 - Campinas
 
Slides
SlidesSlides
Slides
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Variaveis Superglobais
Variaveis SuperglobaisVariaveis Superglobais
Variaveis Superglobais
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
Cookies e Sessões e PHP
Cookies e Sessões e PHPCookies e Sessões e PHP
Cookies e Sessões e PHP
 
Aula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHPAula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHP
 
Desenvolvimento Mobile Web usando PHP
Desenvolvimento Mobile Web usando PHPDesenvolvimento Mobile Web usando PHP
Desenvolvimento Mobile Web usando PHP
 
Web Service and PHP, REST and SOAP
Web Service and PHP, REST and SOAPWeb Service and PHP, REST and SOAP
Web Service and PHP, REST and SOAP
 
Como implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHPComo implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHP
 
Construindo uma Rede Social com PHP e Software Livre
Construindo uma Rede Social com PHP e Software LivreConstruindo uma Rede Social com PHP e Software Livre
Construindo uma Rede Social com PHP e Software Livre
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHP
 
Servicio y Consumo de Servicios REST en PHP
Servicio y Consumo de Servicios REST en PHPServicio y Consumo de Servicios REST en PHP
Servicio y Consumo de Servicios REST en PHP
 
Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHP
 
Rest api design by george reese
Rest api design by george reeseRest api design by george reese
Rest api design by george reese
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 

Similaire à Serversidephp pptx2-120418140114-phpapp01

Similaire à Serversidephp pptx2-120418140114-phpapp01 (20)

Módulo de php
Módulo de phpMódulo de php
Módulo de php
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHP
 
Apresentação formação web - up marketing digital - módulo ii
Apresentação   formação web - up marketing digital - módulo iiApresentação   formação web - up marketing digital - módulo ii
Apresentação formação web - up marketing digital - módulo ii
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançado
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScript
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites II
 
PHP, Mercado e Certificações
PHP, Mercado e CertificaçõesPHP, Mercado e Certificações
PHP, Mercado e Certificações
 
Introdução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHPIntrodução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHP
 
Aprendendo PHP.pdf
Aprendendo PHP.pdfAprendendo PHP.pdf
Aprendendo PHP.pdf
 
Zephir
ZephirZephir
Zephir
 
Aula3
Aula3Aula3
Aula3
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Curso completo php
Curso completo phpCurso completo php
Curso completo php
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
PHP 5.3 - Introdução
PHP 5.3 - IntroduçãoPHP 5.3 - Introdução
PHP 5.3 - Introdução
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
 

Serversidephp pptx2-120418140114-phpapp01

  • 1. Server Side PHP, MVC, MySQL E AJAX Prof: Sérgio Souza Costa
  • 2. Roteiro Linguagens e framework PHP e um simples MVC A linguagem PHP PHP + MySQL PHP + MySQL + MVC PHP + MySQL + MVC + AJAX Controle de sessão e cookies
  • 3. Linguagens são compostas por sintaxe, semântica e pragmática. Em computação ele deve ser universal e implementável.
  • 4. Linguagens são compostas por sintaxe, semântica e pragmática. Em computação ele deve ser universal e implementável. Framework é um conjunto de objetos que colaboram com o objetivo de atender um conjunto de responsabilidades para uma aplicação específica ou um domínio de aplicação (Erick Gamma, 1995)
  • 5. Linguagens Framework JAVA J2EE (JSF, STRUTS...) RUBY ON RAILS PHP Zend, CakePHP... C#, Visual Basic ... .NET Perl Catalyst C++ CppCMS Python Django, Zope Haskell SNAP,Happstack
  • 6. Frameworks ● Disciplina ● Simplificação ● Agilidade / Rapidez ● Padrões de desenvolvimento / Design Pattern ● Organização ● Menos código ● Conjunto de utilitários
  • 7. Frameworks Similar as metodologias de ● Disciplina engenharia de software, se ficar muito “burocratico”, ● Simplificação pode tornar lento o ● Agilidade / Rapidez processo. Isso será mais perceptível em pequenos ● Padrões de desenvolvimento / Design projetos Pattern ● Organização ● Menos código ● Conjunto de utilitários
  • 8. Frameworks nos “ensinam” a boa prática de desenvolvimento Framework é muito mais que uma biblioteca, é o resultado da experiência de varias profissionais, concretizada em um software. Esta experiência é descrita através dos padrões de projetos, que nos ENSINOU a desenvolver. Porem usar padrões requere experiência, os frameworks nos ajudam nisso.
  • 10. Qual melhor ? Em muitos casos, escolhemos uma tecnologia pela tendência e não por critérios quantitativos. Não existe a melhor. Grandes empresas usam muito mais que uma tecnologia, usualmente se baseiam em soluções hibridas, java, php, c++ ....
  • 11. PHP é a tecnologia base: Wikipedia Facebook Yahoo IBM Apple Nasa
  • 13. Java != PHP São duas tecnologias bem distintas. ● Java vai muito além do que se propõe o PHP. ● Java pode substituir o PHP, o contrário não é ● possível
  • 14. Tiobe index não representa a realidade, nenhum indicador na verdade é capaz disso. Ele apenas é um indicador que pode mostrar uma “tendência”.
  • 15.
  • 16.
  • 17. Java era “modismo” ? O “mundo” é mais que java e php, ☺ "Ninguém" queria usar PHP, observa que isso era em 2002, 10 anos atrás.
  • 19. Mantenham a cabeça aberta, livrem-se de seus preconceitos Prendam se a conceitos, não a linguagens e frameworks
  • 20. Mantenham a cabeça aberta, livrem-se de seus preconceitos Aprender novas linguagens é uma boa forma de treinar e se prepararem para aprender. Prendam se a conceitos, não a linguagens e frameworks
  • 21. PHP Guia rápido http://www.php.net/manual/pt_BR/
  • 23. PHP (um acrônimo recursivo para PHP: Hypertext Preprocessor) é uma linguagem de script open source de uso geral, muito utilizada e especialmente guarnecida para o desenvolvimento de aplicações Web embútivel dentro do HTML.
  • 24. PHP (um acrônimo recursivo para PHP: Hypertext Preprocessor) é uma linguagem de script open source de uso geral, muito utilizada e especialmente guarnecida para o desenvolvimento de aplicações Web embútivel dentro do HTML. O código PHP é delimitado pelas tags <?php .... ?> Ou <?= expressao ?>
  • 25. Imprimir HTML tags em PHP = bad style
  • 26. PHP expression block: good way Formato: <?= expression ?> <!DOCTYPE html> <html> <head> ola.php <meta charset="utf-8" /> <title></title> </head> <body> <p> <?= "Ola Mundo" ?> </p> </body> </html>
  • 27. PHP Frameworks MVC Objeto relacional Testes CakePHP PHPUnit CakePHP lime Zend PROPEL Simphony2 Doctrine Code igneter
  • 28. Antes de vermos detalhes da LINGUAGEM, veremos um exemplo simples de um MVC sem o auxilio de frameworks. Baixem o arquivo.
  • 29. Exemplo usado de: http://php-html.net/tutorials/model-view-controller-in-php/ Model View Controler Simplificado, pressuposto -> cliente através da Web.
  • 30. Index.php <?php include_once("controller/Controller.php"); $controller = new Controller(); $controller->invoke(); ?>
  • 31. controller.php class Controller { public $model; public function __construct() { $this->model = new Model(); MODEL } public function invoke() { if (!isset($_GET['book'])) { // no special book is requested, we'll show a list of all available books $books = $this->model->getBookList(); include 'view/booklist.php'; View 1 } else{ // show the requested book $book = $this->model->getBook($_GET['book']); include 'view/viewbook.php'; } View 2 } }
  • 32. book.php class Book { public $title; public $author; public $description; public function __construct($title, $author, $description) { $this->title = $title; $this->author = $author; $this->description = $description; } }
  • 33. model.php Simulando um class Model { banco public function getBookList() { return array( "Jungle Book" => new Book("Jungle Book", "R. Kipling", "A classic book."), "Moonwalker" => new Book("Moonwalker", "J. Walker", ""), "PHP for Dummies" => new Book("PHP for Dummies", "Some Smart Guy", "") ); } public function getBook($title) { Simulando um $allBooks = $this->getBookList(); “select” return $allBooks[$title]; } }
  • 34. booklist.php …. <tr><td>Title</td><td>Author</td><td>Description</td></tr> <?php foreach ($books as $title => $book) { ?> <tr> <td><a href="index.php?book=<?=$book->title?>"><?=$book->title?></a></td> <td><?=$book->author?></td> <td><?=$book->description?></td> </tr> <?php } ?>…. Baixem e experimente estes viewbook.php códigos. <html> <head></head> <body> <p> Title: <?= $book->title ?> </p> <p> Author: <?= $book->author ?> </p> <p> Description: <?= $book->description ?> </p> </body> </html>
  • 36. Imperativa Dinâmica Orientada a objeto Estilo funcional
  • 37. Variáveis As variáveis no PHP são representadas por um cifrão ($) seguido pelo nome da variável. Os nomes de variável no PHP fazem distinção entre maiúsculas e minúsculas. Um nome de variável válido se inicia com uma letra ou sublinhado, seguido de qualquer número de letras, algarismos ou sublinhados.
  • 38. Variáveis e atribuição <?php $var = 'Bob'; $Var = 'Joe'; // case sensitive, $var e diferente de $Var echo "$var, $Var"; // exibe "Bob, Joe" $4site = 'not yet'; // inválido; começa com um número $_4site = 'not yet'; // válido; começa com um sublinhado $täyte = 'mansikka'; // válido; 'ä' é um caracter ASCII (extendido) 228 $var = 10; // dinamico $var += 5; // soma o valor de $var a 5 e atribui a $var $var /= 2; // divide o valor de $var por 2 e atribui a $var ?>
  • 39. Constante Constantes são valores que são declarados e não podem ser alterados durante a sua execução. Para definir uma constante utilizamos a função define <?php define("CONSTANTE", "Alô Mundo."); define("SALARIOMINIMO", 1000); define("DIRETORIOHOME", "/home"); ?>
  • 40. Valores e tipos Primitivos Especiais Compostos: boolean resource array integer NULL Object Float string
  • 41. Booleanos Este é o tipo mais simples. Um booleano expressa um valor verdade. Ele pode ser TRUE ou FALSE. Para especificar um literal booleano, use as palavras-chave TRUE ou FALSE. Ambas são case-insensitive. <?php $variavel = True; // atribui o valor True para $variavel ?>
  • 42. Ponto flutuante Números de ponto flutuante (também conhecidos como "floats", "doubles" ou "números reais") podem ser especificados utilizando qualquer uma das seguintes sintaxes: <?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?>
  • 43. String Uma string é uma série de caracteres. PHP não impõe limite de tamanho de uma string; o único limite é o de memória disponível do computador no qual o PHP está sendo executado. <?php echo 'isto é uma string comum'; echo 'Você pode incluir novas linhas em strings, dessa maneira que estará tudo bem'; ?>
  • 44. Array Um array no PHP é um mapa ordenado. Um mapa é um tipo que relaciona valores para chaves. array( chave => valor , ... ) // chave pode ser tanto string ou um integer // valor pode ser qualquer coisa <?php $arr = array("foo" => "bar", 12 => true); echo $arr["foo"]; // bar echo $arr[12]; // 1 ?>
  • 45. Objeto Um Objeto pode ser criado com o construtor de linguagem new <?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); ?>
  • 46. Objeto Veremos sobre classes em PHP mais a Um Objeto pode ser criado com o construtor de frente linguagem new <?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); ?>
  • 47. Resources Um recurso é uma variável especial, que mantém uma referência a um recurso externo. Recursos são criados e usados por funções especiais. <?php $result = mysql_connect("localhost", "username", "pass"); ?>
  • 48. Null Valor especial NULL representa que a variável não tem valor. NULL é o único valor possível do tipo NULL. A variável é considerada null se: 1. ela foi assimilada com a constante NULL. 2. ela não recebeu nenhum valor ainda. 3. ela foi apagada com unset().
  • 49. Type casting A conversão de tipos no PHP funciona como no C: o nome de um tipo desejado é escrito entre parênteses antes da variável em que se deseja a moldagem. (int), (integer) - molde para inteiro (bool), (boolean) - converte para booleano (float), (double), (real) - converte para número de ponto flutuante (string) - converte para string (array) - converte para array (object) - converte para objeto (unset) - converte para NULL (PHP 5)
  • 50. Recebendo dados de uma requisição Para receber os dados de uma requisição, usamos variáveis pré-definidas pelo PHP ($_POST ou $_GET), conforme o método de envio utilizado no formulário. <?php //neste caso temos no formulário um campo chamado nome e método de envio POST $nome = $_POST['nome']; //neste caso temos no formulário um campo chamado nome e método de envio GET $nome = $_GET['nome']; $nome = $_REQUEST['nome']; // contem ambos ?>
  • 51. Respondendo uma requisição Uma resposta do servidor será em geral um texto, estruturado no formato HTML, XML, JSON, texto puro e etc <?php $nome = $_REQUEST['nome']; echo "respondendo ao ". $nome; ?>
  • 52. Operadores unários Operadores Descrição ++$a Pré-incremento. Incrementa $a em um e, então, retorna $a; $a++ Pós-incremento. Retorna $a e, então, incrementa $a em um. --$a Pré-decremento. Decrementa $a em um e, então, retorna $a; $a-- Pós-incremento. Retorna $a e, então, decrementa $a em um.
  • 53. Operadores aritméticos Operadores Descrição + Adição - Subtração * Multiplicação / Divisão % Módulo (resto da divisão)
  • 54. Operadores relacionais Operadores Descrição == Igual. Resulta verdadeiro (TRUE) se expressões forem iguais === Idêntico. Resulta verdadeiro (TRUE) se as expressões forem iguais e do mesmo tipo de dados. != ou <> Diferente. Resulta verdadeiro se as variáveis forem diferentes. < Menor que. > Maior que. <= Menor ou igual. >= Maior ou igual.
  • 55. Operadores lógicos Operadores Descrição ($a and $b) E: Verdadeiro (TRUE) se tanto $a quanto $b forem verdadeiros ($a or $b) OU: Verdadeiro (TRUE) se $a ou $b forem verdadeiros ($a xor $b) XOR: Verdadeiro (TRUE) se $a ou $b forem verdadeiros, de forma exclusiva. (! $a) NOT: Verdadeiro (TRUE) se $a for false. ($a && $b) E: Verdadeiro (TRUE) se tanto $a quanto $b forem verdadeiros ($a || $b) OU: Verdadeiro (TRUE) se $a ou $b forem verdadeiros
  • 56. Controle de fluxo Seleção Iteração <?php $i = 1; if ($a > $b) { while ($i <= 10) { echo "a is bigger than b"; echo $i++; } elseif ($a == $b) { } echo "a is equal to b"; } else { echo "a is smaller than b"; for ($i = 1; $i <= 10; $i++) { } echo $i; ?> } switch ($i) { case 0: foreach ($arr as $key => $value) { echo "i equals 0"; echo "Key: $key; Value: $value<br />n"; case 1: } echo "i equals 1"; case 2: echo "i equals 2"; }
  • 57. “Incluindo” arquivos Include, inclui e avalia o arquivo informado. Se o arquivo não existir produzirá uma mensagem de advertência (warning). include_once, garante que será avaliado apenas uma vês. require, similar ao include, porem produz uma mensagem de Fatal Error caso o arquivo não exista. require_once, garante que será avaliado apenas uma vês.
  • 58. PHP Orientado a objetos
  • 59. Estilo orientado a objeto # construi um objeto $name = new ClassName(parameters); # acessando um atribtuo $name->fieldName # chamando um método $name->methodName(parameters); $zip = new ZipArchive(); $zip->open("moviefiles.zip"); $zip->extractTo("images/"); $zip->close();
  • 60. Sintaxe para declaração de classe class ClassName { # atributos da classe public $name; # atributos públicos private $name; # atributos privados # construtor da classe public function __construct(parameters) { statement(s); } # métodos – comportamento de cada objeto public function name(parameters) { statements; } }
  • 61. Sintaxe para declaração de classe class ClassName { # atributos da classe public $name; # atributos públicos private $name; # atributos privados # construtor da classe public function __construct(parameters) { statement(s); } # métodos – comportamento de cada objeto public function name(parameters) { statements; } }
  • 62. Exemplo <?php class Point { public $x; public $y; # equivalent of a Java constructor public function __construct($x, $y) { $this->x = $x; $this->y = $y; } public function distance($p) { $dx = $this->x - $p->x; $dy = $this->y - $p->y; return sqrt($dx * $dx + $dy * $dy); } # equivalent of Java's toString method public function __toString() { return "(" . $this->x . ", " . $this->y . ")"; } } $p1 = new Point (2,4); echo $p1; ?>
  • 63. Herança class ClassName extends ClassName { ... } class Point3D extends Point { public $z; public function __construct($x, $y, $z) { parent::__construct($x, $y); $this->z = $z; } } $p2 = new Point3D (4,5,6);
  • 64. Interface interface InterfaceName { public function name(parameters); public function name(parameters); ... } class ClassName implements InterfaceName{ ... Classe abstrata abstract class ClassName { abstract public function name(parameters); ... }
  • 65. Interface Possui similaridades, porem classes interface InterfaceName { abstratas podem public function name(parameters); atribtutos e possuir public function name(parameters); ... Ambas construtores. } nao são instanciaveis class ClassName implements InterfaceName{ ... Classe abstrata abstract class ClassName { abstract public function name(parameters); ... }
  • 66. Integrando com o banco de dados PHP + MySQL Baixem o arquivo.
  • 67. MySQL Criem um banco chamado "bib", com uma tabela chamada "books", com três atributos (title, author and description)
  • 68. Acessando MySQL book.php <body> <p> livros </p> <table> <?php $mysqli = new mysqli("localhost", "root", "", "bib"); $result = $mysqli->query("SELECT * FROM books"); while ($row = $result->fetch_object()) { ?> <tr> <td><?=$row->title ?></td> <td><?=$row->author ?></td> <td><?=$row->description ?></td> <?php } ?> </ul> </body>
  • 69. PHP + MVC + MySQL Voltando ao simples MVC .... Só mudaremos o Model.php, o restante se mantêm Baixem o arquivo.
  • 70. Incluir um Usando o MySQL construtor, que inicializa um objeto para conexao com o banco public function __construct(){ $this->mysqli = new mysqli("localhost", "root", "", "bib"); } public function getBookList(){ $result = $this->mysqli->query("SELECT * FROM books"); $result_array ; while ($row = $result->fetch_object()) { $result_array[$row->title] = new Book ($row->title, $row->author, $row->description); } return $result_array; } Array de objetos é montado a partir do resultado da consulta ao banco.
  • 71. PHP + MVC + MySQL + AJAX Baixem o arquivo.
  • 72. PHP + MVC + MySQL + AJAX Usando o mesmo banco e projeto, podemos usar apenas uma view. Ao clicar em um livro, fazemos uma requisição, que retornará o objeto no formato JSON. O conteúdo irá variar de acordo com a seleção.
  • 73. PHP + MVC + MySQL + AJAX Incluimos um script, "bookdetail.php", que será responsável por receber a solicitação e encaminhar a resposta. <?php require_once("../model/Model.php"); $model = new Model(); $book = $model->getBook($_REQUEST['book']); echo (json_encode ($book)); ?> requisição o titulo resposta JSON do livro
  • 74. PHP + MVC + MySQL + AJAX Associado ao click do texto $(".title").click( function () { $.getJSON( Requisição com "view/bookdetails.php", parametros {book:$.trim($(this).text())}, function (response) { var $book_detail = $("<div/>") Resposta, de $.each (response, function (i, item) { JSON já convertida para $("<p/>",{ objeto JavaScript text: (i + " : " + item) }).appendTo($book_detail) ; }); // each $("#viewbook").html($book_detail) }) }) })
  • 76. Controle de Sessão Suporte a sessões no PHP consiste de uma maneira de presevar dados através de acessos subsequentes. Isso permite a criação de aplicações mais personalizadas e aumenta o apelo do seu web site. Variáveis de sessão
  • 77. sempre deverá ser chamada para tratar as variaveis de Variáveis de sessão sessões sessao1.php <?php session_start(); Crio uma $_SESSION['nome'] = "sergio"; variavel de echo $_SESSION['nome']; sessão ?>
  • 78. Variáveis de sessão: Criando e acessando sessao1.php <?php session_start(); $_SESSION['nome'] = "sergio"; echo $_SESSION['nome']; ?> sempre deverá ser chamada para tratar as variaveis de sessões sessao2.php <?php acessando uma session_start(); variável criada echo $_SESSION['nome']; em outro ?> contexto
  • 79. Variáveis de sessão: Destruindo <?php session_start(); session_destroy(); ?>
  • 80. Nos exemplo, em sessao.zip, encontraram um exemplo simples, de uso de sessão para validar um login.
  • 81. Cookies Cookie, são dados no fomato (chave, valor) que podem ser enviado para o cliente e que serão transmitidos entre todas as futuras conexões, enquanto ele existir.
  • 82. Cookies Em um dado contexto, um cookie pode ser enviado. <?php setcookie ("nome", "sergio"); echo "te mandei um cookie (nome, sergio)" ?>
  • 83. Cookies Em um dado contexto, um cookie pode ser enviado. <?php setcookie ("nome", "sergio"); echo "te mandei um cookie (nome, sergio)" ?> <?php echo $_COOKIE['nome']." voce por aqui :)"; ?> Acessado em outro contexto.
  • 84. Cookies O cookie pode ter um tempo pre- definido para expirar, um mês neste exemplo. <?php $expire=time()+60*60*24*30; setcookie("user", "Alex Porter", $expire); ?>
  • 85. Conclusão PHP é uma linguagem leve, ágil, muito utilizada na web, e com muitos recursos que permite desenvolver software de qualidade. A agilidade do PHP, é o fato dela ser uma linguagem interpretada, tornando o processo de "implantação" muito mais fácil. PHP deve ser considerada em projetos de aplicações Web, principalmente em pequenos projetos e em protótipos. Contudo, mesmo em grandes projetos PHP continua sendo usado, por exemplo, Facebook. Dependendo das necessidades, existem diversos frameworks completos, para persistência, MVC e testes de unidade. Similarmente ao Java, possuem um conjunto de regras, arquivos de onfiguração ....