Back-End

3 mai, 2010

Phar: distribuindo aplicação PHP em um único arquivo

Publicidade

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