PHP 5.3 parte 4: Arquivos Phar
Arquivo 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. Exemplo:
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.
Caso não existam nenhum procedimento especial ao carregar o arquivo Phar, onde você deseja simplesmente exeturar um arquivo php diretamente, usá-se o método createDefaultStub. É só passá-lo como parâmetro para o método setStub.
Vamos a um exemplo prático onde utilizaremos os conceitos já abordados até aqui. Criar arquivo index.php:
PHP para criar pacote Phar (cria_phar.php):
Criando o arquivo teste.phar através da linha de comando:
Após a execução do script acima será criado o arquivo teste.phar.
Executando o pacote phar:
A saída da execução do script acima será:
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. Exemplo:
$p->setStub('<?php Phar::mapPhar(); include "phar://app.phar/index.php"; __HALT_COMPILER(); ?>');
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.
Caso não existam nenhum procedimento especial ao carregar o arquivo Phar, onde você deseja simplesmente exeturar um arquivo php diretamente, usá-se o método createDefaultStub. É só passá-lo como parâmetro para o método setStub.
$p->setStub($p->createDefaultStub('index.php'));
Vamos a um exemplo prático onde utilizaremos os conceitos já abordados até aqui. Criar arquivo index.php:
<?php echo "Olá mundo";
PHP para criar pacote Phar (cria_phar.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 arquivo teste.phar através da linha de comando:
# php cria_phar.php
Após a execução do script acima será criado o arquivo teste.phar.
Executando o pacote phar:
# php teste.phar
A saída da execução do script acima será:
Olá Mundo
Foi mal pelo quest anterior. Na verdade o que eu não entendi foi como roda a aplicação depois que ela está em .phar
01/04/2010 9:54am
(~14 anos atrás)
Eu não entendi, isso tem que ser executado na raiz da aplicaco? no caso /public_html/ no servidor?
01/04/2010 9:46am
(~14 anos atrás)
Só um adendo. O Phar em si não é algo novo. O Pear vem empacotado em um arquivo .phar quando baixamos o pacote do php em .zip.
Para usar Phar em versões anteriores a PHP 5.3 basta usar as extensão PECL
http://pecl.php.net/package/phar
Para usar Phar em versões anteriores a PHP 5.3 basta usar as extensão PECL
http://pecl.php.net/package/phar
25/02/2010 4:49pm
(~14 anos atrás)
Douglas,Parabéns nem sabia que dava pra fazer algo do tipo com o php achei muito bacana seu artigo vlw ai :d
25/02/2010 7:16am
(~14 anos atrás)
Douglas, parabéns pelo artigo. O "phar" não me soa estranho, mas é um recurso que eu não conhecia. Muito bacana.
14/01/2010 11:27pm
(~15 anos atrás)
Alterar a linha acima para:
Coloque o arquivo .phar dentro do diretório Root do apache, que no seu caso pode ser dentro do public_html/
Depois é só acessar. Exemplos:
http://localhost/exemplo.phar
http://localhost/exemplo.phar/admin.php