SlideShare ist ein Scribd-Unternehmen logo
1 von 53
APROFUNDE-SE NO PHP 5.3
Marcus Vinicius Bastos Leandro
http://www.phpnaveia.com.br
Você já está usando o PHP 5.3?
Um breve histórico

PHP 5.0 implementou um novo modelo de
objetos

PHP 5.3 nos presenteou com: namespaces,
clousures, late static binding, etc...

PHP 6 ?...
Por que migrar para o PHP 5.3?

Mais rápido

Melhor gerenciamento de memória

Bug fixes

Zend Framework 2.0, Symfony 2.0, Doctrine
2.0 vão requerer o PHP 5.3
Definição de Classes
<?php
namespace SystemControl;
class UserController {}
$uc = new SystemControlUserController();
$uc2 = new UserController(); //mesma classe da
declaração anterior
Definição de funções
<?php
namespace SystemControl;
function hello(){
return “Hello”;
}
echo SystemControlhello(); //Hello
echo hello(); //Hello
Usando Classes de outro
Namespace
<?php
namespace ZendSignalSlot {
class Signals{}
}
namespace{ //global
use ZendSignalSlotSignals;
$signals = new Signals();
}
Alterando o nome
<?php
namespace SquirrelCore{
class Site{}
}
namespace{
use SquirrelCoreSite as SquirrelSite;
$squirrelSite = new SquirrelSite();
}
Chamada Global
<?php
namespace Doctrine{
class Manager{
public static function load() { }
}
}
namespace{
DoctrineManager::load();
}
Late Static Binding
O problema
Classe Mãe
<?php
class Foo{
protected static function speak(){
return “Hi”;
}
public static function sayHi(){
return self::speak();
}
}
Classe Filha
<?php
class Bar extends Foo{
protected static function speak(){
return “Hello”;
}
}
“Hi” ou “Hello” ?
<?php
echo Bar::sayHi();
“Hi” ou “Hello” ?
<?php
echo Bar::sayHi(); //Hi
A solução
Classe Mãe
<?php
class Foo{
protected static function speak(){
return “Hi”;
}
public static function sayHi(){
return static::speak();
}
}
Classe Filha
<?php
class Bar extends Foo{
protected static function speak(){
return “Hello”;
}
}
“Hi” ou “Hello”
<?php
echo Bar::sayHi(); //Hello
Clousures / Lambdas
Atribuindo a variáveis
<?php
$sayHi = function(){
return “Hi”;
}
echo $sayHi();
Escopo
<?php
$saudacao = 'Olá';
$falar = function ( $nome ) use ($saudacao){
return $saudacao . ' ' . $nome;
}
echo $falar('Marcus'); //Olá Marcus
Funções anônimas
<?php
function processaAlgo( $valor, $callback ){
…
$callback();
}
processaAlgo( 10, function(){
echo “Processado ...”;
} );
Phar ( PHP Archive )

Distribuindo aplicações em um único arquivo
Criando arquivos Phar
<?php
$phar = new Phar(
'/projeto/app.phar', //caminho para o arquivo
0, //parâmetros
'app.phar' //Alias para referências
);
$phar->startBuffering();
Adicionando arquivos
<?php
$phar->addFile( “/projeto/header.php” );
$phar->addFile( “/projeto/funcoes.php”,
“/lib/global.php” );
Adicionando arquivos – outra forma
<?php
$phar['index.php'] =
file_get_contents( '/projeto/index.php' );
$phar['header.php'] = '<h1>Header</h1>';
Adicionando arquivos de um
diretório
<?php
$phar->buildFromDirectory( '/projeto', '/.php/' );
Stub

O arquivo Stub é um pedaço de código que
será executado quando o arquivo Phar for
carregado. Para definir o pedaço de código que
será executado ao carregar o arquivo Phar
pode-se usar o método setStub que aceita o
código em forma de string.
Stub
<?php
$phar->setStub('<?php Phar::mapPhar();
include "phar://app.phar/index.php";
__HALT_COMPILER(); ?>');
Stub

O código deve terminar com a função
__HALT_COMPILER().

O método statico Phar::mapPhar() lê e inicializa
o arquivo Phar a ser executado.

O streammer phar:// é usado para referenciar
os arquivos que estão dento do pacote Phar.
No exemplo anterior ao carregar o arquivo
app.phar será executado o arquivo index.php.
Stub

Caso não exista nenhum procedimento
especial ao carregar o arquivo Phar, e você
deseja simplesmente executar um arquivo php
diretamente, use o método createDefaultStub.
É só passá-lo como parâmetro para o método
setStub.
Stub
<?php
$phar->setStub($p-
>createDefaultStub( 'index.php' ) );
Exemplo completo

index.php
<?php
echo “Olá mundo”;
?>
Script para criar o Phar

criaPhar.php
<?php
$p = new Phar('teste.phar', 0, 'teste.phar');
$p->startBuffering();
$p['index.php'] = file_get_contents("index.php");
// $p->addFile('index.php'); - segunda opção para
incluir arquivos.
$p->setStub($p->createDefaultStub('index.php'));
$p->stopBuffering();
Criando o phar
# php criaPhar.php

Após a execução do script acima será criado o
arquivo teste.phar
Executando o Phar
# php teste.phar

A saída da execução será:
Olá Mundo
E tem mais...

Funções de internacionalização

SQLite versão 3

FileInfo: mime-type, encoding -
http://www.php.net/manual/en/ref.fileinfo.php
DateTime Object

Adicionar o subtrair datas

Calcular a diferença entre duas datas

Definir/recuperar unix timestamp

http://www.brandonsavage.net/cool-datetime-
functions-in-php-5-3/
Novas estruturas SPL
SPL Stack

Push e Pop

Last in, First Out (LIFO)

Usa menos memória do que arrays para
grandes pilhas ( mais que 5.000 elementos )
SPLQueue

Enqueue & Dequeue

First in, First Out (FIFO)

Mais rápida e usa menos memória que arrays
SPLHeap

Insert & Remove

Reordena elementos baseado em
comparações

Mais rápido e usa menos memória que arrays
Veja mais em
http://matthewturland.com/2010/05/20/new-spl-
features-in-php-5-3/
GOTO

Essa parte pula
Nova sintaxe
__invoke()
<?php
class Foo{
public function __invoke($x){
return $x + $x;
}
}
$foo = new Foo();
echo $foo(2); //4
__callStatic()
<?php
class Foo{
public static function __callStatic( $name, $args ){
return $name . ' foi chamada estaticamente';
}
}
echo Foo::bar(); //bar foi chamada
//estaticamente
__DIR__
<?php
echo dirname(__FILE__);
echo __DIR__;
Novo ternário
<?php
$user->setApelido('mvleandro');
$apelido = $user->getApelido()?:'Não informado';
echo $apelido; //mvleandro
Referência

PHP Manual – http://php.net/

Bradley Holt – http://bradley-holt.com/

PHP Brasil - http://phpbrasil.com/
Perguntas?
Obrigado
Marcus Vinicius Bastos Leandro
http://www.phpnaveia.com.br
Twitter: @mvleandro
E-mail: mvleandro@gmail.com
MSN: marcus_leandro@hotmail.com
Cel: (21)-8211-9096

Weitere ähnliche Inhalte

Was ist angesagt?

Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Thyago Maia
 
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 IIinfo_cimol
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 3
Desenvolvimento de sistemas web com PHP Frameworks - Aula 3Desenvolvimento de sistemas web com PHP Frameworks - Aula 3
Desenvolvimento de sistemas web com PHP Frameworks - Aula 3Thyago Maia
 
Proxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesProxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesStanislaw Pusep
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIinfo_cimol
 
YUM, APT-GET, DPKG, RPM
YUM, APT-GET, DPKG, RPMYUM, APT-GET, DPKG, RPM
YUM, APT-GET, DPKG, RPMSoftD Abreu
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
Segurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSegurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSamyr Abdo
 
Curso De Shell Aula 1
Curso De Shell   Aula 1Curso De Shell   Aula 1
Curso De Shell Aula 1Felipe Santos
 
Php 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosPhp 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosRegis Magalhães
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Michael Castillo Granados
 

Was ist angesagt? (19)

PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
PostgreSQL 8.4
PostgreSQL 8.4PostgreSQL 8.4
PostgreSQL 8.4
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
 
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
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 3
Desenvolvimento de sistemas web com PHP Frameworks - Aula 3Desenvolvimento de sistemas web com PHP Frameworks - Aula 3
Desenvolvimento de sistemas web com PHP Frameworks - Aula 3
 
Proxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesProxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testes
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites II
 
YUM, APT-GET, DPKG, RPM
YUM, APT-GET, DPKG, RPMYUM, APT-GET, DPKG, RPM
YUM, APT-GET, DPKG, RPM
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
PHP e Mysql - DELETE
PHP e Mysql - DELETEPHP e Mysql - DELETE
PHP e Mysql - DELETE
 
JasperReports
JasperReportsJasperReports
JasperReports
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Shell script i
Shell script iShell script i
Shell script i
 
Segurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSegurança PHP - por Samyr Abdo
Segurança PHP - por Samyr Abdo
 
Curso De Shell Aula 1
Curso De Shell   Aula 1Curso De Shell   Aula 1
Curso De Shell Aula 1
 
Php 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosPhp 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies Cabecalhos
 
Modulos SNEP
Modulos SNEPModulos SNEP
Modulos SNEP
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 
PHPT
PHPTPHPT
PHPT
 

Andere mochten auch

Meetup elasticsearch - Rio de Janeiro - Luiz Guilherme
Meetup elasticsearch - Rio de Janeiro - Luiz GuilhermeMeetup elasticsearch - Rio de Janeiro - Luiz Guilherme
Meetup elasticsearch - Rio de Janeiro - Luiz GuilhermeLuiz Guilherme Santos
 
Fazendo mágica com ElasticSearch
Fazendo mágica com ElasticSearchFazendo mágica com ElasticSearch
Fazendo mágica com ElasticSearchPedro Franceschi
 
Devcamp 2015 - 1 milhão de pedidos, 1 milhão de entregas… Quais as tecnologia...
Devcamp 2015 - 1 milhão de pedidos, 1 milhão de entregas… Quais as tecnologia...Devcamp 2015 - 1 milhão de pedidos, 1 milhão de entregas… Quais as tecnologia...
Devcamp 2015 - 1 milhão de pedidos, 1 milhão de entregas… Quais as tecnologia...Eduardo Ximenes Soares
 
Analisando eventos de forma inteligente para detecção de intrusos usando ELK
Analisando eventos de forma inteligente para detecção de intrusos usando ELKAnalisando eventos de forma inteligente para detecção de intrusos usando ELK
Analisando eventos de forma inteligente para detecção de intrusos usando ELKSegInfo
 
Exraindo informações de negócio a partir de logs de aplicações dom o ELK
Exraindo informações de negócio a partir de logs de aplicações dom o ELKExraindo informações de negócio a partir de logs de aplicações dom o ELK
Exraindo informações de negócio a partir de logs de aplicações dom o ELKMarcus Vinicius Leandro
 
Monitore sua infraestrutura com o Elasticsearch
Monitore sua infraestrutura com o ElasticsearchMonitore sua infraestrutura com o Elasticsearch
Monitore sua infraestrutura com o ElasticsearchMarcus Vinicius Leandro
 
Monitorando logs de aplicações com o ELK
Monitorando logs de aplicações com o ELKMonitorando logs de aplicações com o ELK
Monitorando logs de aplicações com o ELKMarcus Vinicius Leandro
 

Andere mochten auch (11)

Meetup elasticsearch - Rio de Janeiro - Luiz Guilherme
Meetup elasticsearch - Rio de Janeiro - Luiz GuilhermeMeetup elasticsearch - Rio de Janeiro - Luiz Guilherme
Meetup elasticsearch - Rio de Janeiro - Luiz Guilherme
 
Domando os logs
Domando os logsDomando os logs
Domando os logs
 
Primeiros Passos Com Elasticsearch
Primeiros Passos Com ElasticsearchPrimeiros Passos Com Elasticsearch
Primeiros Passos Com Elasticsearch
 
Case Kinghost + Elasticsearch
Case Kinghost + ElasticsearchCase Kinghost + Elasticsearch
Case Kinghost + Elasticsearch
 
Fazendo mágica com ElasticSearch
Fazendo mágica com ElasticSearchFazendo mágica com ElasticSearch
Fazendo mágica com ElasticSearch
 
Devcamp 2015 - 1 milhão de pedidos, 1 milhão de entregas… Quais as tecnologia...
Devcamp 2015 - 1 milhão de pedidos, 1 milhão de entregas… Quais as tecnologia...Devcamp 2015 - 1 milhão de pedidos, 1 milhão de entregas… Quais as tecnologia...
Devcamp 2015 - 1 milhão de pedidos, 1 milhão de entregas… Quais as tecnologia...
 
Aplicando SOLID com PHP7
Aplicando SOLID com PHP7Aplicando SOLID com PHP7
Aplicando SOLID com PHP7
 
Analisando eventos de forma inteligente para detecção de intrusos usando ELK
Analisando eventos de forma inteligente para detecção de intrusos usando ELKAnalisando eventos de forma inteligente para detecção de intrusos usando ELK
Analisando eventos de forma inteligente para detecção de intrusos usando ELK
 
Exraindo informações de negócio a partir de logs de aplicações dom o ELK
Exraindo informações de negócio a partir de logs de aplicações dom o ELKExraindo informações de negócio a partir de logs de aplicações dom o ELK
Exraindo informações de negócio a partir de logs de aplicações dom o ELK
 
Monitore sua infraestrutura com o Elasticsearch
Monitore sua infraestrutura com o ElasticsearchMonitore sua infraestrutura com o Elasticsearch
Monitore sua infraestrutura com o Elasticsearch
 
Monitorando logs de aplicações com o ELK
Monitorando logs de aplicações com o ELKMonitorando logs de aplicações com o ELK
Monitorando logs de aplicações com o ELK
 

Ähnlich wie PHP 5.3 Recursos

Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1Israel Messias
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 
Curso PHP UNIFACS 2014.1 – 2ª aula
Curso PHP UNIFACS 2014.1 – 2ª aulaCurso PHP UNIFACS 2014.1 – 2ª aula
Curso PHP UNIFACS 2014.1 – 2ª aulaJonata Weber
 
Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Douglas V. Pasqua
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECLW3P Projetos Web
 
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Thyago Maia
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
PHPSP TestFest 2009
PHPSP TestFest 2009PHPSP TestFest 2009
PHPSP TestFest 2009Rafael Dohms
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPressLeandrinho Vieira
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2Thyago Maia
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3Jose Berardo
 

Ähnlich wie PHP 5.3 Recursos (20)

Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Curso PHP UNIFACS 2014.1 – 2ª aula
Curso PHP UNIFACS 2014.1 – 2ª aulaCurso PHP UNIFACS 2014.1 – 2ª aula
Curso PHP UNIFACS 2014.1 – 2ª aula
 
Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3
 
Dev Ext PHP
Dev Ext PHPDev Ext PHP
Dev Ext PHP
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECL
 
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
PHPSP TestFest 2009
PHPSP TestFest 2009PHPSP TestFest 2009
PHPSP TestFest 2009
 
Aula 2
Aula 2Aula 2
Aula 2
 
Doctrine2 Seminário PHP
Doctrine2 Seminário PHPDoctrine2 Seminário PHP
Doctrine2 Seminário PHP
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPress
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Procergs php-seguro
Procergs php-seguroProcergs php-seguro
Procergs php-seguro
 
Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3
 
A Revolução dos Middlewares
A Revolução dos MiddlewaresA Revolução dos Middlewares
A Revolução dos Middlewares
 

PHP 5.3 Recursos