O documento discute as novas funcionalidades introduzidas no PHP 5.3, incluindo namespaces, closures, late static binding e a estrutura SPL. Ele também explica como criar arquivos Phar para distribuir aplicações PHP em um único arquivo.
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 ?...
4. 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
5. Definição de Classes
<?php
namespace SystemControl;
class UserController {}
$uc = new SystemControlUserController();
$uc2 = new UserController(); //mesma classe da
declaração anterior
7. Usando Classes de outro
Namespace
<?php
namespace ZendSignalSlot {
class Signals{}
}
namespace{ //global
use ZendSignalSlotSignals;
$signals = new Signals();
}
8. Alterando o nome
<?php
namespace SquirrelCore{
class Site{}
}
namespace{
use SquirrelCoreSite as SquirrelSite;
$squirrelSite = new SquirrelSite();
}
27. Adicionando arquivos – outra forma
<?php
$phar['index.php'] =
file_get_contents( '/projeto/index.php' );
$phar['header.php'] = '<h1>Header</h1>';
28. Adicionando arquivos de um
diretório
<?php
$phar->buildFromDirectory( '/projeto', '/.php/' );
29. 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.
31. 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.
32. 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.
48. __callStatic()
<?php
class Foo{
public static function __callStatic( $name, $args ){
return $name . ' foi chamada estaticamente';
}
}
echo Foo::bar(); //bar foi chamada
//estaticamente