PHPBásico	
  II
IF / ELSEIF / ELSE
<?php!
!
$a = 60;!
$b = 60;!
!
if ($a == $b) {!
! echo '$a e $b são iguais';!
} elseif ($a > $b) {!
! echo '$a é maior que $b';!
} else {!
! echo '$a é menor que $b';!
}!
While / Do-While
<?php!
!
/* While */!
$i = 1;!
while ($i <= 10) {!
! echo $i++;!
}!
!
/* Do-While */!
$i = 1;!
do {!
! echo $i++;!
} while ($i <= 10);!
For / Foreach
<?php!
!
for ($i = 0; $i <= 100; $i++) {!
! echo $i . PHP_EOL;!
} !
!
foreach (range(0, 100) as $numero) {!
! echo $numero . PHP_EOL;!
}!
Foreach
<?php!
!
for ($i = 0; $i <= 100; $i++) {!
! echo $i . PHP_EOL;!
} !
!
foreach (range(0, 100) as $numero) {!
! echo $numero . PHP_EOL;!
}!
Foreach
<?php!
!
$clientes[3] = ['nome' => 'John Doe'];!
$clientes[2] = ['nome' => 'Steve Jobs'];!
$clientes[1] = ['nome' => 'Bill Gates'];!
!
foreach ($clientes as $chave => $cliente)!
! echo "Cliente #{$chave}: {$cliente['nome']}" . PHP_EOL;!
!
/* Output:!
Cliente #3: John Doe!
Cliente #2: Steve Jobs!
Cliente #1: Bill Gates!
*****/!
Foreach
<?php!
!
$lista = array(50, 60, 70, 80);!
!
foreach ($lista as $chave => $valor)!
! echo "$chave: $valor" . PHP_EOL;!
!
/* Output:!
0: 50!
1: 60!
2: 70!
3: 80!
*****/!
Switch
<?php!
!
$i = 1;!
!
switch ($i) {!
! case 0: !
! ! echo 'primeira opção';!
! ! break;!
! case 1: !
! ! echo 'segunda opção';!
! ! break;!
! case 2:!
! ! echo 'terceira opção';!
! ! break;!
}!
Include / Require
arquivo01.php!
<?php!
!
$texto = 'Trabalhando com o Include no PHP';!
!
function dobrar($numero) {!
! return $numero * 2;!
}!
!
!
arquivo02.php!
<?php!
!
include 'arquivo01.php';!
!
echo dobrar(4); // Output: 8!
echo $texto; // Output: Trabalhando com o Include no PHP!
Include
Exibe	
  um	
  “Warning”	
  e	
  não	
  interrompe	
  a	
  execução
Warning:	
  include(arquivo1.php):	
  failed	
  to	
  open	
  stream:	
  No	
  such	
  file	
  
or	
  directory	
  in	
  /Users/jweber/dev/projects/php/arquivo1.php	
  on	
  
line	
  3	
  
!
Warning:	
  include():	
  Failed	
  opening	
  'arquivo1.php'	
  for	
  inclusion	
  
(include_path='.:')	
  in	
  /Users/jweber/dev/projects/php/
arquivo1.php	
  on	
  line	
  3	
  
!
Fatal	
  error:	
  Call	
  to	
  undefined	
  function	
  dobrar()	
  in	
  /Users/jweber/
dev/projects/php/arquivo2.php	
  on	
  line	
  5
Require
Exibe	
  um	
  “Fatal	
  Error”	
  e	
  interrompe	
  a	
  execução
Warning:	
  require(arquivo1.php):	
  failed	
  to	
  open	
  stream:	
  No	
  
such	
  file	
  or	
  directory	
  in	
  /Users/jweber/dev/projects/php/
arquivo1.php	
  on	
  line	
  3	
  
!
Fatal	
  error:	
  require():	
  Failed	
  opening	
  required	
  
'arquivo1.php'	
  (include_path='.:')	
  in	
  /Users/jweber/dev/
projects/php/arquivo1.php	
  on	
  line	
  3
• Pode ser atribuída à uma variável ou invocadas
dinamicamente;
• Passadas como argumentos à outras funções;
• Pode retornar outras funções (called higher-order
functions);
• Presente na linguagem desde o PHP 5.3 (2009)
como Closures;
• Diversas melhorias no PHP 5.4 (2012);
Funções Anônimas no PHP
13
<?php!
!
$input = array(1, 2, 3, 4, 5, 6);!
!
// Criar função anônima!
$filtroNumeroPar = function($item) {!
return ($item % 2) == 0;!
};!
!
// Função do PHP array_filter!
$output = array_filter($input, $filtroNumeroPar);!
!
// Você pode passar a função direto!
$output = array_filter($input, function($item) {!
return ($item % 2) == 0;!
});!
!
print_r($output);!
Exemplo 01
Lambda
14
Exemplo 02
Closure
<?php!
/**!
* Creates an anonymous filter function accepting items > $min!
*!
* Returns a single filter out of a family of "greater than n" filters!
*/!
function criteria_greater_than($min)!
{!
return function($item) use ($min) {!
return $item > $min;!
};!
}!
!
$input = array(1, 2, 3, 4, 5, 6);!
!
// Use array_filter on a input with a selected filter function!
$output = array_filter($input, criteria_greater_than(3));!
!
print_r($output); // items > 3!
15
http://www.php.net/manual/pt_BR/function.array-filter.php
16
http://php.net/manual/en/function.call-user-func-array.php
17
https://wiki.php.net/rfc/closures
Funções Anônimas no PHP
Onde Estudar?
www.phptherightway.com
Onde Estudar?
www.php.net/docs.php
Onde Estudar?
www.php.net/docs.php
Onde Estudar?
http://www.codecademy.com/tracks/php
Onde Estudar?
http://www.w3schools.com/html/html_intro.asp
Onde Estudar?
http://www.codecademy.com/tracks/web
Onde Estudar?
http://www.w3c.br/Cursos/CursoHTML5
25
PHP!
Orientado a Objetos
• PHP é flexível;
• Linguagem dinâmica;
• Suporta uma variedade de técnicas de
programação;
• Sólido modelo OO no PHP 5.0 (2004);
• Traits na 5.4 (2012);
Language Highlights
Classe
<?php!
!
class MinhaClasse!
{!
!
! public ! $atributoPublico ! = 'Público';!
! protected $atributoProtegido = 'Protegido';!
! private ! $atributoPrivado ! = 'Privado';!
!
! public function metodoQualquer()!
! {!
! ! echo $this->atributoPublico;!
! ! echo $this->atributoProtegido;!
! ! echo $this->atributoPrivado;!
! }!
!
}!
!
$objeto = new MinhaClasse();!
echo $objeto->atributoPublico; // OK!
echo $objeto->atributoProtegido; // Fatal Error!
echo $objeto->atributoPrivado; // Fatal Error!
$objeto->metodoQualquer(); // PúblicoProtegidoPrivado!
Construtor
<?php!
!
class Pessoa !
{!
!
! private $nome;!
! private $sobrenome;!
!
! public function __construct($nome, $sobrenome)!
! {!
! ! $this->nome = $nome;!
! ! $this->sobrenome = $sobrenome;!
! }!
!
! public function getNomeCompleto() !
! {! return $this->nome . ' ' . $this->sobrenome;!
! }!
!
}!
!
$joao = new Pessoa('João', 'da Silva');!
echo $joao->getNomeCompleto(); // João da Silva!
Destrutor
<?php!
!
class Pessoa!
{!
!
! private $nome, $sobrenome;!
!
! public function __construct($nome, $sobrenome)!
! {!
! ! $this->nome = $nome;!
! ! $this->sobrenome = $sobrenome;!
! }!
!
! public function __destruct()!
! {! echo 'Destruindo...';!
! }!
! !
}!
!
$joao = new Pessoa('João', 'da Silva');!
unset($joao); //Destruindo...!
//$joao = null; //Destruindo...!
Método Estático
<?php!
!
class MinhaClasse!
{!
!
! function metodoNormal()!
! {! echo 'Método Normal';!
! }!
!
! static function metodoEstatico()!
! {! echo 'Método Estático';!
! }!
!
}!
!
MinhaClasse::metodoNormal(); // Error!
MinhaClasse::metodoEstatico(); // OK!
!
$objeto = new MinhaClasse();!
$objeto->metodoNormal();!
$objeto->metodoEstatico();!
Herança<?php!
!
class OutraClasse!
{!
!
! public $atributo = 'Atributo Qualquer';!
!
! public function hello()!
! {! echo 'Hello World';!
! }!
!
}!
!
class MinhaClasse extends OutraClasse!
{!
!
! public function getAtributo()!
! {! return $this->atributo;!
! }!
!
}!
!
$objeto = new MinhaClasse();!
$objeto->hello();!
echo $objeto->getAtributo();!
Classe Abstrata
<?php!
!
abstract class OutraClasse!
{!
!
! public $atributo = 'Atributo Qualquer';!
!
! public function hello()!
! {! echo 'Hello World';!
! }!
!
}!
!
class MinhaClasse extends OutraClasse!
{!
!
! public function getAtributo()!
! {! return $this->atributo;!
! }!
!
}!
!
$objeto2 = new OutraClasse(); // Fatal Error!
Método Abstrato
<?php!
!
abstract class MinhaClasse!
{!
! abstract function metodoAbstrato();!
!
! public function getAtributo()!
! {! return $this->atributo;!
! }!
!
}!
!
$objeto = new MinhaClasse(); // Fatal Error!
Como utilizar o mesmo
nome de classe em uma
outra biblioteca?
Namespaces
O que é Namespace?
c:arquivospasta01foo.txt
c:arquivospasta02foo.txt
Assim, consigo ter arquivos com os
mesmos nomes, porém, em
caminhos diferentes.
36
Namespaces
<?php!
!
namespace EscolaPublica;!
!
class Estudante!
{!
!
! public $matricula, $nome, $serie;!
!
! function __construct($matricula, $nome, $serie)!
! {!
! ! $this->matricula = $matricula;!
! ! $this->nome = $nome;!
! ! $this->serie = $serie;!
! }!
!
}!
37
Namespaces
<?php!
!
namespace EscolaPrivada;!
!
class Estudante!
{!
!
! public $matricula, $nome, $serie;!
!
! function __construct($matricula, $nome, $serie)!
! {!
! ! $this->matricula = $matricula;!
! ! $this->nome = $nome;!
! ! $this->serie = $serie;!
! }!
!
}!
38
Namespaces
<?php!
!
require 'projeto/src/publica/Estudante.php';!
$joao = new EscolaPublicaEstudante();!
!
require 'projeto/src/privada/Estudante.php';!
$pedro = new EscolaPrivadaEstudante();!
Namespaces
<?php!
// PHP 5.3 and later:!
namespace VendorModel;!
!
class Foo!
{!
}!
!
<?php!
// PHP 5.2.x and earlier:!
class Vendor_Model_Foo!
{!
}!
Namespaces
<?php!
!
require 'projeto/src/publica/Estudante.php';!
require 'projeto/src/privada/Estudante.php';!
!
use EscolaPublicaEstudante as EstudantePublica();!
use EscolaPrivadaEstudante as EstudantePrivada();!
!
$joao = new EstudantePublica();!
$pedro = new EstudantePrivada();!
Interfaces
<?php!
!
interface NomeDaInterface !
{! public function metodo($parametro);!
}!
!
interface NomeDeOutraInterface!
{! public function outroMetodo($param1, $param2);!
}!
!
class Qualquer implements NomeDaInterface, NomeDeOutraInterface!
{!
! !
! public function metodo($parametro)!
! {! print('Implementação...' . $parametro);!
! }!
!
! public function outroMetodo($param1, $param2) !
! {! print('Implementação 2...' . $param1 . $param2);!
! }!
!
}!
!
$objeto = new Qualquer();!
$objeto->metodo('Teste');!
Constantes
<?php!
namespace VendorModel;!
!
class Foo!
{!
const VERSION = '1.0';!
const DATE_APPROVED = '2012-06-01';!
!
public function getVersion()!
{! return self::VERSION;!
}!
}!
!
echo Foo::VERSION;!
Traits
<?php!
!
trait Hello!
{!
! function ola($nome)!
! {! echo "Olá, {$nome}!";!
! }!
}!
!
class Pessoa!
{!
! use Hello;!
}!
!
$joao = new Pessoa();!
$joao->ola('Maria'); //Olá, Maria!!
DateTime
<?php!
!
$input = '12. 30. 2014';!
$data = DateTime::createFromFormat('m. d. Y', $input);!
!
echo 'Data no Padrão BR: ' . $data->format('d/m/Y');!
DateTime
<?php!
!
$input = '12. 30. 2014';!
$dataInicial = DateTime::createFromFormat('m. d. Y', $input);!
$dataFinal = clone $dataInicial;!
!
$dataFinal->add(new DateInterval('P4M23D')); // Adiciona 1 mês e 6 dias!
!
$diff = $dataFinal->diff($dataInicial);!
!
print('Diff: ' . $diff->format('%m meses, %d dias (total: %a dias)') . PHP_EOL);!
!
/* Output:!
Diff: 4 meses, 24 dias (total: 144 dias)!
**/!
Autoload
Simples
<?php!
!
function __autoload($classe)!
{!
! require $classe . '.php'; // require 'Pessoa.php';!
}!
!
$pessoa = new Pessoa();!
Try / Catch
<?php!
!
function divisao($dividendo, $divisor)!
{!
! if (0 === $divisor)!
! ! throw new Exception('Divisão por zero!');!
!
! return $dividendo / $divisor;!
}!
!
try !
{!
! $quociente = divisao(6, 0); // Fatal Error!
} !
catch (Exception $ex) !
{!
! printf("Error: %s", $ex->getMessage());!
}!
finally !
{!
! print('Finally sempre será executado...');!
}!
SPL Exceptions
http://php.net/manual/en/spl.exceptions.php
SPL Exceptions
<?php!
!
class ValidationFailedException extends Exception {}!
Try / Catch
<?php!
$email = new FuelEmail;!
$email->subject('My Subject');!
$email->body('How the heck are you?');!
$email->to('guy@example.com', 'Some Guy');!
!
try!
{!
$email->send();!
}!
catch(FuelEmailValidationFailedException $e)!
{!
// The validation failed!
}!
catch(FuelEmailSendingFailedException $e)!
{!
// The driver could not send the email!
}!
finally!
{!
/* Executed regardless of whether an exception has been !
! thrown, and before normal execution resumes */!
}!
JSON
JSON (JavaScript Object Notation - Notação de
Objetos JavaScript) é uma formatação leve de troca de
dados. Para seres humanos, é fácil de ler e escrever.
Para máquinas, é fácil de interpretar e gerar.
JSON está constituído em duas estruturas:
• Uma coleção de pares nome/valor. Em várias linguagens,
isto é caracterizado como um object, record, struct,
dicionário, hash table, keyed list, ou arrays associativas.
• Uma lista ordenada de valores. Na maioria das
linguagens, isto é caracterizado como uma array, vetor,
lista ou sequência.
JSON
{!
! "clientes": [!
! ! {"nome":"John" , "sobrenome":"Doe"}, !
! ! {"nome":"Anna" , "sobrenome":"Smith"}, !
! ! {"nome":"Peter" , "sobrenome":"Jones"}!
! ]!
}!
www.json.org
API da Matriz de
distâncias do Google
https://developers.google.com/maps/documentation/distancematrix/?hl=pt-br
É um serviço que fornece distância e tempo de deslocamento para uma
matriz de origens e destinos. As informações retornadas são baseadas no
trajeto recomendado entre pontos de partida e de chegada, conforme
calculado pela API do Google Maps, e consistem em linhas que contêm
valores duration e distance para cada par.
Curso PHP UNIFACS 2014.1 – 2ª aula

Curso PHP UNIFACS 2014.1 – 2ª aula

  • 1.
  • 2.
    IF / ELSEIF/ ELSE <?php! ! $a = 60;! $b = 60;! ! if ($a == $b) {! ! echo '$a e $b são iguais';! } elseif ($a > $b) {! ! echo '$a é maior que $b';! } else {! ! echo '$a é menor que $b';! }!
  • 3.
    While / Do-While <?php! ! /*While */! $i = 1;! while ($i <= 10) {! ! echo $i++;! }! ! /* Do-While */! $i = 1;! do {! ! echo $i++;! } while ($i <= 10);!
  • 4.
    For / Foreach <?php! ! for($i = 0; $i <= 100; $i++) {! ! echo $i . PHP_EOL;! } ! ! foreach (range(0, 100) as $numero) {! ! echo $numero . PHP_EOL;! }!
  • 5.
    Foreach <?php! ! for ($i =0; $i <= 100; $i++) {! ! echo $i . PHP_EOL;! } ! ! foreach (range(0, 100) as $numero) {! ! echo $numero . PHP_EOL;! }!
  • 6.
    Foreach <?php! ! $clientes[3] = ['nome'=> 'John Doe'];! $clientes[2] = ['nome' => 'Steve Jobs'];! $clientes[1] = ['nome' => 'Bill Gates'];! ! foreach ($clientes as $chave => $cliente)! ! echo "Cliente #{$chave}: {$cliente['nome']}" . PHP_EOL;! ! /* Output:! Cliente #3: John Doe! Cliente #2: Steve Jobs! Cliente #1: Bill Gates! *****/!
  • 7.
    Foreach <?php! ! $lista = array(50,60, 70, 80);! ! foreach ($lista as $chave => $valor)! ! echo "$chave: $valor" . PHP_EOL;! ! /* Output:! 0: 50! 1: 60! 2: 70! 3: 80! *****/!
  • 8.
    Switch <?php! ! $i = 1;! ! switch($i) {! ! case 0: ! ! ! echo 'primeira opção';! ! ! break;! ! case 1: ! ! ! echo 'segunda opção';! ! ! break;! ! case 2:! ! ! echo 'terceira opção';! ! ! break;! }!
  • 9.
    Include / Require arquivo01.php! <?php! ! $texto= 'Trabalhando com o Include no PHP';! ! function dobrar($numero) {! ! return $numero * 2;! }! ! ! arquivo02.php! <?php! ! include 'arquivo01.php';! ! echo dobrar(4); // Output: 8! echo $texto; // Output: Trabalhando com o Include no PHP!
  • 10.
    Include Exibe  um  “Warning”  e  não  interrompe  a  execução Warning:  include(arquivo1.php):  failed  to  open  stream:  No  such  file   or  directory  in  /Users/jweber/dev/projects/php/arquivo1.php  on   line  3   ! Warning:  include():  Failed  opening  'arquivo1.php'  for  inclusion   (include_path='.:')  in  /Users/jweber/dev/projects/php/ arquivo1.php  on  line  3   ! Fatal  error:  Call  to  undefined  function  dobrar()  in  /Users/jweber/ dev/projects/php/arquivo2.php  on  line  5
  • 11.
    Require Exibe  um  “Fatal  Error”  e  interrompe  a  execução Warning:  require(arquivo1.php):  failed  to  open  stream:  No   such  file  or  directory  in  /Users/jweber/dev/projects/php/ arquivo1.php  on  line  3   ! Fatal  error:  require():  Failed  opening  required   'arquivo1.php'  (include_path='.:')  in  /Users/jweber/dev/ projects/php/arquivo1.php  on  line  3
  • 12.
    • Pode seratribuída à uma variável ou invocadas dinamicamente; • Passadas como argumentos à outras funções; • Pode retornar outras funções (called higher-order functions); • Presente na linguagem desde o PHP 5.3 (2009) como Closures; • Diversas melhorias no PHP 5.4 (2012); Funções Anônimas no PHP
  • 13.
    13 <?php! ! $input = array(1,2, 3, 4, 5, 6);! ! // Criar função anônima! $filtroNumeroPar = function($item) {! return ($item % 2) == 0;! };! ! // Função do PHP array_filter! $output = array_filter($input, $filtroNumeroPar);! ! // Você pode passar a função direto! $output = array_filter($input, function($item) {! return ($item % 2) == 0;! });! ! print_r($output);! Exemplo 01 Lambda
  • 14.
    14 Exemplo 02 Closure <?php! /**! * Createsan anonymous filter function accepting items > $min! *! * Returns a single filter out of a family of "greater than n" filters! */! function criteria_greater_than($min)! {! return function($item) use ($min) {! return $item > $min;! };! }! ! $input = array(1, 2, 3, 4, 5, 6);! ! // Use array_filter on a input with a selected filter function! $output = array_filter($input, criteria_greater_than(3));! ! print_r($output); // items > 3!
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
    • PHP éflexível; • Linguagem dinâmica; • Suporta uma variedade de técnicas de programação; • Sólido modelo OO no PHP 5.0 (2004); • Traits na 5.4 (2012); Language Highlights
  • 27.
    Classe <?php! ! class MinhaClasse! {! ! ! public! $atributoPublico ! = 'Público';! ! protected $atributoProtegido = 'Protegido';! ! private ! $atributoPrivado ! = 'Privado';! ! ! public function metodoQualquer()! ! {! ! ! echo $this->atributoPublico;! ! ! echo $this->atributoProtegido;! ! ! echo $this->atributoPrivado;! ! }! ! }! ! $objeto = new MinhaClasse();! echo $objeto->atributoPublico; // OK! echo $objeto->atributoProtegido; // Fatal Error! echo $objeto->atributoPrivado; // Fatal Error! $objeto->metodoQualquer(); // PúblicoProtegidoPrivado!
  • 28.
    Construtor <?php! ! class Pessoa ! {! ! !private $nome;! ! private $sobrenome;! ! ! public function __construct($nome, $sobrenome)! ! {! ! ! $this->nome = $nome;! ! ! $this->sobrenome = $sobrenome;! ! }! ! ! public function getNomeCompleto() ! ! {! return $this->nome . ' ' . $this->sobrenome;! ! }! ! }! ! $joao = new Pessoa('João', 'da Silva');! echo $joao->getNomeCompleto(); // João da Silva!
  • 29.
    Destrutor <?php! ! class Pessoa! {! ! ! private$nome, $sobrenome;! ! ! public function __construct($nome, $sobrenome)! ! {! ! ! $this->nome = $nome;! ! ! $this->sobrenome = $sobrenome;! ! }! ! ! public function __destruct()! ! {! echo 'Destruindo...';! ! }! ! ! }! ! $joao = new Pessoa('João', 'da Silva');! unset($joao); //Destruindo...! //$joao = null; //Destruindo...!
  • 30.
    Método Estático <?php! ! class MinhaClasse! {! ! !function metodoNormal()! ! {! echo 'Método Normal';! ! }! ! ! static function metodoEstatico()! ! {! echo 'Método Estático';! ! }! ! }! ! MinhaClasse::metodoNormal(); // Error! MinhaClasse::metodoEstatico(); // OK! ! $objeto = new MinhaClasse();! $objeto->metodoNormal();! $objeto->metodoEstatico();!
  • 31.
    Herança<?php! ! class OutraClasse! {! ! ! public$atributo = 'Atributo Qualquer';! ! ! public function hello()! ! {! echo 'Hello World';! ! }! ! }! ! class MinhaClasse extends OutraClasse! {! ! ! public function getAtributo()! ! {! return $this->atributo;! ! }! ! }! ! $objeto = new MinhaClasse();! $objeto->hello();! echo $objeto->getAtributo();!
  • 32.
    Classe Abstrata <?php! ! abstract classOutraClasse! {! ! ! public $atributo = 'Atributo Qualquer';! ! ! public function hello()! ! {! echo 'Hello World';! ! }! ! }! ! class MinhaClasse extends OutraClasse! {! ! ! public function getAtributo()! ! {! return $this->atributo;! ! }! ! }! ! $objeto2 = new OutraClasse(); // Fatal Error!
  • 33.
    Método Abstrato <?php! ! abstract classMinhaClasse! {! ! abstract function metodoAbstrato();! ! ! public function getAtributo()! ! {! return $this->atributo;! ! }! ! }! ! $objeto = new MinhaClasse(); // Fatal Error!
  • 34.
    Como utilizar omesmo nome de classe em uma outra biblioteca? Namespaces
  • 35.
    O que éNamespace? c:arquivospasta01foo.txt c:arquivospasta02foo.txt Assim, consigo ter arquivos com os mesmos nomes, porém, em caminhos diferentes.
  • 36.
    36 Namespaces <?php! ! namespace EscolaPublica;! ! class Estudante! {! ! !public $matricula, $nome, $serie;! ! ! function __construct($matricula, $nome, $serie)! ! {! ! ! $this->matricula = $matricula;! ! ! $this->nome = $nome;! ! ! $this->serie = $serie;! ! }! ! }!
  • 37.
    37 Namespaces <?php! ! namespace EscolaPrivada;! ! class Estudante! {! ! !public $matricula, $nome, $serie;! ! ! function __construct($matricula, $nome, $serie)! ! {! ! ! $this->matricula = $matricula;! ! ! $this->nome = $nome;! ! ! $this->serie = $serie;! ! }! ! }!
  • 38.
    38 Namespaces <?php! ! require 'projeto/src/publica/Estudante.php';! $joao =new EscolaPublicaEstudante();! ! require 'projeto/src/privada/Estudante.php';! $pedro = new EscolaPrivadaEstudante();!
  • 39.
    Namespaces <?php! // PHP 5.3and later:! namespace VendorModel;! ! class Foo! {! }! ! <?php! // PHP 5.2.x and earlier:! class Vendor_Model_Foo! {! }!
  • 40.
    Namespaces <?php! ! require 'projeto/src/publica/Estudante.php';! require 'projeto/src/privada/Estudante.php';! ! useEscolaPublicaEstudante as EstudantePublica();! use EscolaPrivadaEstudante as EstudantePrivada();! ! $joao = new EstudantePublica();! $pedro = new EstudantePrivada();!
  • 41.
    Interfaces <?php! ! interface NomeDaInterface ! {!public function metodo($parametro);! }! ! interface NomeDeOutraInterface! {! public function outroMetodo($param1, $param2);! }! ! class Qualquer implements NomeDaInterface, NomeDeOutraInterface! {! ! ! ! public function metodo($parametro)! ! {! print('Implementação...' . $parametro);! ! }! ! ! public function outroMetodo($param1, $param2) ! ! {! print('Implementação 2...' . $param1 . $param2);! ! }! ! }! ! $objeto = new Qualquer();! $objeto->metodo('Teste');!
  • 42.
    Constantes <?php! namespace VendorModel;! ! class Foo! {! constVERSION = '1.0';! const DATE_APPROVED = '2012-06-01';! ! public function getVersion()! {! return self::VERSION;! }! }! ! echo Foo::VERSION;!
  • 43.
    Traits <?php! ! trait Hello! {! ! functionola($nome)! ! {! echo "Olá, {$nome}!";! ! }! }! ! class Pessoa! {! ! use Hello;! }! ! $joao = new Pessoa();! $joao->ola('Maria'); //Olá, Maria!!
  • 44.
    DateTime <?php! ! $input = '12.30. 2014';! $data = DateTime::createFromFormat('m. d. Y', $input);! ! echo 'Data no Padrão BR: ' . $data->format('d/m/Y');!
  • 45.
    DateTime <?php! ! $input = '12.30. 2014';! $dataInicial = DateTime::createFromFormat('m. d. Y', $input);! $dataFinal = clone $dataInicial;! ! $dataFinal->add(new DateInterval('P4M23D')); // Adiciona 1 mês e 6 dias! ! $diff = $dataFinal->diff($dataInicial);! ! print('Diff: ' . $diff->format('%m meses, %d dias (total: %a dias)') . PHP_EOL);! ! /* Output:! Diff: 4 meses, 24 dias (total: 144 dias)! **/!
  • 46.
    Autoload Simples <?php! ! function __autoload($classe)! {! ! require$classe . '.php'; // require 'Pessoa.php';! }! ! $pessoa = new Pessoa();!
  • 47.
    Try / Catch <?php! ! functiondivisao($dividendo, $divisor)! {! ! if (0 === $divisor)! ! ! throw new Exception('Divisão por zero!');! ! ! return $dividendo / $divisor;! }! ! try ! {! ! $quociente = divisao(6, 0); // Fatal Error! } ! catch (Exception $ex) ! {! ! printf("Error: %s", $ex->getMessage());! }! finally ! {! ! print('Finally sempre será executado...');! }!
  • 48.
  • 49.
  • 50.
    Try / Catch <?php! $email= new FuelEmail;! $email->subject('My Subject');! $email->body('How the heck are you?');! $email->to('guy@example.com', 'Some Guy');! ! try! {! $email->send();! }! catch(FuelEmailValidationFailedException $e)! {! // The validation failed! }! catch(FuelEmailSendingFailedException $e)! {! // The driver could not send the email! }! finally! {! /* Executed regardless of whether an exception has been ! ! thrown, and before normal execution resumes */! }!
  • 51.
    JSON JSON (JavaScript ObjectNotation - Notação de Objetos JavaScript) é uma formatação leve de troca de dados. Para seres humanos, é fácil de ler e escrever. Para máquinas, é fácil de interpretar e gerar. JSON está constituído em duas estruturas: • Uma coleção de pares nome/valor. Em várias linguagens, isto é caracterizado como um object, record, struct, dicionário, hash table, keyed list, ou arrays associativas. • Uma lista ordenada de valores. Na maioria das linguagens, isto é caracterizado como uma array, vetor, lista ou sequência.
  • 52.
    JSON {! ! "clientes": [! !! {"nome":"John" , "sobrenome":"Doe"}, ! ! ! {"nome":"Anna" , "sobrenome":"Smith"}, ! ! ! {"nome":"Peter" , "sobrenome":"Jones"}! ! ]! }! www.json.org
  • 53.
    API da Matrizde distâncias do Google https://developers.google.com/maps/documentation/distancematrix/?hl=pt-br É um serviço que fornece distância e tempo de deslocamento para uma matriz de origens e destinos. As informações retornadas são baseadas no trajeto recomendado entre pontos de partida e de chegada, conforme calculado pela API do Google Maps, e consistem em linhas que contêm valores duration e distance para cada par.