Serversidephp pptx2-120418140114-phpapp01
Upcoming SlideShare
Loading in...5
×
 

Serversidephp pptx2-120418140114-phpapp01

on

  • 330 views

 

Statistics

Views

Total Views
330
Views on SlideShare
330
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Serversidephp pptx2-120418140114-phpapp01 Serversidephp pptx2-120418140114-phpapp01 Presentation Transcript

  • Server SidePHP, MVC, MySQL E AJAXProf: Sérgio Souza Costa
  • RoteiroLinguagens e framework PHP e um simples MVCA linguagem PHP PHP + MySQLPHP + MySQL + MVC PHP + MySQL + MVC + AJAXControle de sessão e cookies
  • Linguagens são compostas por sintaxe,semântica e pragmática. Em computaçãoele deve ser universal e implementável.
  • Linguagens são compostas por sintaxe,semântica e pragmática. Em computaçãoele deve ser universal e implementável.Framework é um conjunto de objetos quecolaboram com o objetivo de atender umconjunto de responsabilidades para umaaplicaçã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 dedesenvolvimentoFramework é muito mais que uma biblioteca,é o resultado da experiência de variasprofissionais, concretizada em um software.Esta experiência é descrita através dospadrões de projetos, que nos ENSINOU adesenvolver. Porem usar padrões requereexperiência, os frameworks nos ajudamnisso.
  • Qual melhor ?
  • Qual melhor ?Em muitos casos, escolhemos uma tecnologia pelatendência e não por critérios quantitativos.Não existe a melhor.Grandes empresas usam muito mais que umatecnologia, usualmente se baseiam em soluçõeshibridas, 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 é capazdisso. Ele apenas é um indicador quepode 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.
  • ServersideClientside
  • Mantenham a cabeça aberta, livrem-se de seuspreconceitos Prendam se a conceitos, não a linguagens e frameworks
  • Mantenham a cabeça aberta, livrem-se de seuspreconceitos 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ápidohttp://www.php.net/manual/pt_BR/
  • Ciclo de vida
  • PHP (um acrônimo recursivo para PHP: HypertextPreprocessor) é uma linguagem de script open source deuso geral, muito utilizada e especialmente guarnecida para odesenvolvimento de aplicações Web embútivel dentro doHTML.
  • PHP (um acrônimo recursivo para PHP: HypertextPreprocessor) é uma linguagem de script open source deuso geral, muito utilizada e especialmente guarnecida para odesenvolvimento de aplicações Web embútivel dentro doHTML.O código PHP é delimitado pelas tags<?php....?>Ou<?= expressao ?>
  • Imprimir HTML tags em PHP = bad style
  • PHP expression block: good wayFormato: <?= expression ?><!DOCTYPE html><html><head> ola.php<meta charset="utf-8" /><title></title></head><body> <p> <?= "Ola Mundo" ?> </p></body></html>
  • PHP FrameworksMVC Objeto relacional TestesCakePHP PHPUnit CakePHP limeZend PROPELSimphony2 DoctrineCode 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.phpclass Controller { public $model; public function __construct() { $this->model = new Model(); MODEL } public function invoke() { if (!isset($_GET[book])) { // no special book is requested, well show a list of all availablebooks $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.phpclass 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 umclass Model { banco public function getBookList() { return array( "Jungle Book" => new Book("Jungle Book", "R. Kipling", "A classicbook."), "Moonwalker" => new Book("Moonwalker", "J. Walker", ""), "PHP for Dummies" => new Book("PHP for Dummies", "SomeSmart 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 estesviewbook.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âmicaOrientada a objeto Estilo funcional
  • VariáveisAs variáveis no PHP são representadas por um cifrão($) seguido pelo nome da variável. Os nomes devariável no PHP fazem distinção entre maiúsculas eminúsculas.Um nome de variável válido se inicia com uma letra ousublinhado, 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?>
  • ConstanteConstantes são valores que são declarados e não podemser alterados durante a sua execução. Para definir umaconstante utilizamos a função define <?php define("CONSTANTE", "Alô Mundo."); define("SALARIOMINIMO", 1000); define("DIRETORIOHOME", "/home"); ?>
  • Valores e tiposPrimitivos Especiais Compostos:boolean resource arrayinteger NULL ObjectFloatstring
  • BooleanosEste é o tipo mais simples. Um booleano expressaum valor verdade. Ele pode ser TRUE ou FALSE.Para especificar um literal booleano, use aspalavras-chave TRUE ou FALSE. Ambas sãocase-insensitive.<?php $variavel = True; // atribui o valor True para$variavel?>
  • Ponto flutuanteNúmeros de ponto flutuante (também conhecidos como"floats", "doubles" ou "números reais") podem serespecificados utilizando qualquer uma das seguintessintaxes:<?php $a = 1.234; $b = 1.2e3; $c = 7E-10;?>
  • StringUma string é uma série de caracteres.PHP não impõe limite de tamanho de umastring; o único limite é o de memória disponíveldo computador no qual o PHP está sendoexecutado.<?php echo isto é uma string comum; echo Você pode incluir novas linhas em strings, dessamaneira que estarátudo bem;?>
  • ArrayUm 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 ?>
  • ObjetoUm Objeto pode ser criado com o construtor delinguagem new <?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); ?>
  • Objeto Veremos sobre classes em PHP mais aUm Objeto pode ser criado com o construtor de frentelinguagem new<?phpclass foo{ function do_foo() { echo "Doing foo."; }}$bar = new foo;$bar->do_foo();?>
  • ResourcesUm recurso é uma variável especial, que mantémuma referência a um recurso externo.Recursos são criados e usados por funçõesespeciais.<?php $result = mysql_connect("localhost", "username", "pass");?>
  • NullValor especial NULL representa que a variável nãotem valor. NULL é o único valor possível do tipoNULL.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 castingA conversão de tipos no PHP funciona como no C: onome de um tipo desejado é escrito entre parêntesesantes 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 deponto flutuante(string) - converte para string(array) - converte para array(object) - converte para objeto(unset) - converte para NULL (PHP 5)
  • Recebendo dados de umarequisiçãoPara receber os dados de uma requisição, usamosvariáveis pré-definidas pelo PHP ($_POST ou$_GET), conforme o método de envio utilizado noformulá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 umarequisiçãoUma resposta do servidor será em geral um texto,estruturado no formato HTML, XML, JSON, texto puroe etc<?php $nome = $_REQUEST[nome]; echo "respondendo ao ". $nome;?>
  • Operadores unáriosOperadores 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éticosOperadores Descrição+ Adição- Subtração* Multiplicação/ Divisão% Módulo (resto da divisão)
  • Operadores relacionaisOperadores 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ógicosOperadores 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 fluxoSeleçã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” arquivosInclude, inclui e avalia o arquivo informado. Se oarquivo não existir produzirá uma mensagem deadvertência (warning).include_once, garante que será avaliado apenasuma vês.require, similar ao include, porem produz umamensagem de Fatal Error caso o arquivo não exista.require_once, garante que será avaliado apenasuma 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 classeclass 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 classeclass 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 Javas toString method public function __toString() { return "(" . $this->x . ", " . $this->y . ")"; } } $p1 = new Point (2,4); echo $p1;?>
  • Herançaclass 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);
  • Interfaceinterface InterfaceName { public function name(parameters); public function name(parameters); ...}class ClassName implements InterfaceName{ ...Classe abstrataabstract class ClassName { abstract public function name(parameters); ...}
  • Interface Possui similaridades, porem classesinterface InterfaceName { abstratas podem public function name(parameters); atribtutos e possuir public function name(parameters); ... Ambas construtores.} nao são instanciaveisclass ClassName implements InterfaceName{ ...Classe abstrataabstract class ClassName { abstract public function name(parameters); ...}
  • Integrando com o banco de dadosPHP + MySQLBaixem o arquivo.
  • MySQLCriem um banco chamado "bib", com umatabela chamada "books", com trêsatributos (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 + MySQLVoltando ao simples MVC ....Só mudaremos o Model.php,o restante se mantêmBaixem o arquivo.
  • Incluir umUsando o MySQL construtor, que inicializa um objeto para conexao com o bancopublic 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 + AJAXUsando o mesmo banco e projeto, podemos usarapenas uma view. Ao clicar em um livro, fazemos umarequisição, que retornará o objeto no formato JSON. O conteúdo irá variar de acordo com a seleção.
  • PHP + MVC + MySQL + AJAXIncluimos um script, "bookdetail.php", que seráresponsável por receber a solicitação e encaminhar aresposta.<?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ãoBaixem o arquivo
  • Controle de SessãoSuporte a sessões no PHP consiste de uma maneirade presevar dados através de acessos subsequentes.Isso permite a criação de aplicações maispersonalizadas e aumenta o apelo do seu web site. Variáveis de sessão
  • sempre deverá ser chamada para tratar as variaveis deVariáveis de sessão sessõessessao1.php<?php session_start(); Crio uma $_SESSION[nome] = "sergio"; variavel de echo $_SESSION[nome]; sessão?>
  • Variáveis de sessão: Criando e acessandosessao1.php<?php session_start(); $_SESSION[nome] = "sergio"; echo $_SESSION[nome];?> sempre deverá ser chamada para tratar as variaveis de sessõessessao2.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, deuso de sessão para validar um login.
  • CookiesCookie, são dados no fomato (chave, valor) que podem serenviado para o cliente e que serão transmitidos entre todasas 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 ....