Phar::mapPhar

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::mapPharLê o arquivo atualmente em execução (um phar) e registra seu manifesto

Descrição

final public static Phar::mapPhar(?string $alias = null, int $offset = 0): bool

Este método estático só pode ser usado dentro do stub do carregador de um arquivo Phar para inicializar o phar quando ele for executado diretamente ou quando for incluído em outro script.

Parâmetros

alias

O apelido que pode ser usado em URLs phar:// para se referir a este arquivo, em vez do seu caminho completo.

offset

Variável não utilizada, serve apenas para compatibilidade com o PHP_Archive do PEAR.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Erros/Exceções

PharException é lançada se não for chamada diretamente na execução do PHP, se nenhum token __HALT_COMPILER(); for encontrado no arquivo de origem atual ou se o arquivo não puder ser aberto para leitura.

Exemplos

Exemplo #1 Um exemplo de Phar::mapPhar()

Este método deve ser usado apenas dentro do stub de carregamento de um Phar. Use loadPhar para carregar um Phar externo na memória.

Aqui está um exemplo de stub do carregador Phar que usa mapPhar.

<?php
function __autoload($class)
{
include
'phar://me.phar/' . str_replace('_', '/', $class) . '.php';
}
try {
Phar::mapPhar('me.phar');
include
'phar://me.phar/startup.php';
} catch (
PharException $e) {
echo
$e->getMessage();
die(
'Não foi possível inicializar o Phar');
}
__HALT_COMPILER();

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
0
phofstetter at sensational dot ch
11 years ago
Be careful with mapPhar and opcode caches like opcache: They might cache files included by the symbolic name based on the symbolic name you give.

This becomes a problem when a server is hosting multiple different versions of a phar file all using the same symbolic name because then subsequent include()'s in the phar file might load an already cached file from another version of the phar file.

Instead, generate a unique name and use that in mapPhar and in subsequent include()'s

See for example https://github.com/zendtech/ZendOptimizerPlus/issues/115#issuecomment-25612769 for the issue in the opcache module.
To Top