PHP Jedi

Que o PHP esteja com você!

  • Home
  • Sobre

Posts Tagged ‘phar’

PHAR – O JAR do PHP

Friday, July 30th, 2010

  1. O que é o Phar
  2. Exemplos de uso
  3. Instalação
  4. Tutorial
    1. Habilite a escrita no php.ini
    2. Crie a aplicação de teste
    3. Gere o .php que irá criar o .phar
    4. Teste o arquivo criado, por linha de comando
  5. Configure o Apache para executar arquivos .phar
  6. Executando .phar pelo navegador sem usar o Apache.
  7. Outras Funções
  8. Referências

O que é o Phar^

Análago ao .jar do Java, o Phar é utilizado para encapsular arquivos .php e outros em um único arquivo .phar. Uma aplicação inteira pode ser distribuida e executada em um único arquivo, junto com seus arquivos de auxiliares como imagens, css, etc. Não existe ferramenta para gerar .phar, estes são gerados pela classe Phar.

Exemplos de uso^

  • Publicar sua aplicação inteira com somente um arquivo;
  • Usar como um padrão para distribuição de plugins/drivers/etc. para uma aplicação;
  • Gerar arquivos de instalação “auto-instaláveis”.

Instalação^

O Phar já vem junto com o PHP desde a versão 5.3.0. Porém, nas versões anteriores é possível instala-lo através de uma extensão, como visto no seguinte link: http://pecl.php.net/package/phar.

Tutorial^

Neste tutorial será mostrado passo-a-passo como gerar um arquivo .phar a partir de arquivos .php e como executa-lo pelo navegador.

Habilite a escrita no php.ini^

Por razões de segurança, a geração de arquivos .phar é desabilitada por padrão no php.ini. Para habilitar a geração, mude a configuração phar.readonly para Off. Em um servidor de produção não é necessário deixar essa configuração inativa.

Crie a aplicação de teste^

index.php

  1. <?php
  2. include(‘include.php’);
  3. funcao();
  4. ?>

include.php

  1. <?php
  2. function funcao() {
  3. echo ‘Sim, funciona!’;
  4. }
  5. ?>

Gere o .php que irá criar o .phar^

gera_phar.php

  1. <?php
  2. // Cria o arquivo e define o tipo dele como phar não comprimido
  3. $phar = new Phar(‘testephar.phar’, 0, ‘testephar.phar’);
  4. $phar = $phar->convertToExecutable(Phar::PHAR);
  5.  
  6. // Adiciona os arquivos index.php e include.php no testephar.phar
  7. $phar->addFile(‘index.php’);
  8. $phar->addFile(‘include.php’);
  9.  
  10. // Define o index.php como arquivo padrão ao executar
  11. $phar->setMetaData(array(‘bootstrap’ => ‘index.php’));
  12. ?>

Execute o gera_phar.php, na linha de comando ou pelo navegador:

  1. $ php gera_phar.php

Teste o arquivo criado, por linha de comando^

Agora nosso arquivo já pode ser executado por linha de comando:

  1. $ php testephar.phar

Deve retornar:

  1. Sim, funciona!

Configure o Apache para executar arquivos .phar^

Se você acessar pelo navegador o arquivo .phar agora, ele irá baixar o arquivo ao invés de interpreta-lo, portanto precisamos configurar ou Apache (ou outro Servidor Web).

Adicione a seguinte linha ao arquivo httpd.conf:

  1. AddType application/x-httpd-php .phar

Após reiniciar o Apache, o .phar já pode ser executado pelo navegador, como mostrado abaixo:

Executando .phar pelo navegador sem usar o Apache.^

É possível executar arquivos .phar pelo navegador sem alterar as configurações do Apache, basta renomear o arquivo testephar.phar para testephar.phar.php, facilitando a distribuição de aplicações.

Outras Funções^

Além do que foi visto neste artigo, o pacote .phar tem várias funções, veja algumas delas:

  • Incluir arquivos de diretórios recursivamente;
  • Diversos tipos de compactação, como: zip, tar, gzip, bz2;
  • Adicionar e excluir arquivos on-the-fly;
  • “Incluir” arquivos de dentro do .phar a partir de um .php que esteja fora;
  • Utilizar funções de tratamento de arquivos (como fopen, etc.) dentro do .phar;
  • Converter arquivos .tar.gz (ou outros) em .phar prontos para execução.

Referências^

  • http://www.php.net/manual/en/book.phar.php

Tags: phar, tutorial
Posted in Uncategorized | No Comments »

  • Sobre o Blog

    Escrito e mantido por Ariel Patschiki, Empreendedor e Desenvolvedor Web.
    Sócio da Agência Digital MobVox.
  • Últimos Posts

    • O que o PHP não tem (e que nunca terá)
    • Backup em CakePHP
    • Aplicações Desktop em PHP: WinBinder versus PHP-GTK
    • Codificação de Caracteres – ISO-8859-1 versus UTF8
    • Sistemas Corporativos em CakePHP – Separação de Módulos
  • Projetos OpenSource

    • Cake Database Backup
    • Custom Finds
  • Núvem de Tags

    backup básico cakephp comparativo funcionalidade phar sistemas corporativos tipagem tutorial
  • Blogroll

    • ActiveInfo, empresa do Finger
    • Blog do Caio
    • Blog do Ciro Feitosa
    • Blog do Daniel
    • Blog do Finger
    • MobVox
    • Neckness, b2c da Monica
    • Poppy Convites, empresa da Guid
    • Web Töten, empresa do Jefferson
  • Twitter

      @arielpts

    Copyright © 2012 - Ariel Patschiki | Entries (RSS) | Comments (RSS)