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 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
14. 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!
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
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 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!
33. Método Abstrato
<?php!
!
abstract class MinhaClasse!
{!
! abstract function metodoAbstrato();!
!
! public function getAtributo()!
! {! return $this->atributo;!
! }!
!
}!
!
$objeto = new MinhaClasse(); // Fatal Error!
34. Como utilizar o mesmo
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.
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 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.
53. 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.