O Phar tem uma leve semelhança com arquivos .jar .jad do Java, ou seja, uma biblioteca onde a aplicação é compilada e o software, distribuído (aplicação em um único arquivo). Ele vem nativamente na versão 5.3 do PHP. Não existe um software para criar os .phar, então é preciso deixar a preguiça de lado e colocar a mão no SOURCE. Não temos muita perda de desempenho com o Phar pelo fato de ser nativo, mas temos alguns milissegundos.
Instalando o Phar (Class do Pecl)
# sudo pecl install phar
Estou usando o sudo porque ele pede um nível root para instalar.
cd /home/
Para criar um arquivo .phar é preciso instanciar a Class Phar:
<?php
$app = new Phar("app.phar", 0, "app.phar");
$app->startBuffering();
O primeiro parâmetro da Class Phar é o caminho onde será criada a aplicação (app.phar no caso).
O segundo parâmetro são flags passadas para classe pai; e o terceiro é um alias para usarmos no decorrer do projeto.
O startBuffering() é usado para melhorar o desempenho e qualquer mudança feita no Phar só vai ser habilitada quando usarmos o stopBuffering();
Criando arquivo index.php
<?php
echo "Ola mundo Phar";
?>
Vou utilizar o addFile para adicionar os arquivos php dentro do pacote (aplicação):
$app->addFile("index.php");
Caso não tenha nenhum load do arquivo na estrutura do Phar, vamos usar o createDefaultStub()
$app->setStub($app->createDefaultStub("index.php"));
Criando o arquivo para gerar o Phar (create_phar.php)
<?php
$app = new Phar("app.phar", 0, "app.phar");
$app->startBuffering();
$app->addFile("index.php");
$app->setStub($app->createDefaultStub("index.php"));
$app->stopBuffering();
?>
Pronto, nossa parte de source já esta aí! Agora temos que executar; abra o terminal e mão na massa:
#php create_phar.php
Quando terminar de processar o “create_phar.php”, o app.phar será criado, e aí agora basta executá-lo:
#php app.phar
Ele vai retornar o que foi digitado no echo do “index.php”, que foi incluído no phar:
Olá mundo Phar
Caso queira rodar os arquivos .phar no browser, você deve colocar no “Addtype application/x-httpd-php” a extensão “.phar” e dar restart no seu apache.
Mais informações: http://pecl.php.net/package/phar