Phar::mapPhar

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

Phar::mapPharПрочитать текущий запущенный phar-архив и зарегистрировать его манифест

Описание

final public static Phar::mapPhar ([ string $alias [, int $dataoffset = 0 ]] ) : bool

Этот статический метод можно использовать только в заглушке загрузчика Phar-архива в целях его инициализации, когда он запущен напрямую, либо включен в другой скрипт.

Список параметров

alias

Псевдоним можно использовать в обертках phar://, ссылаясь на этот архив, вместо использования полного пути.

dataoffset

Неиспользуемая переменная. Существует только для совместимости с PEAR-пакетом PHP_Archive.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Ошибки

Выбрасывается исключение PharException, если вызывается из скрипта, в котором не обнаружено токена __HALT_COMPILER();, либо если файл недоступен для чтения.

Примеры

Пример #1 Пример использования Phar::mapPhar()

Phar::mapPhar следует использовать только внутри загрузчика заглушки Phar-архива. Используйте loadPhar для загрузки внешнего phar в память.

Простой загрузчик Phar, использующий 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(
'Cannot initialize Phar');
}
__HALT_COMPILER();

Смотрите также

  • Phar::loadPhar() - Загрузить phar-архив с псевдонимом

add a note add a note

User Contributed Notes 1 note

up
0
phofstetter at sensational dot ch
6 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