Phar::mapPhar

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

Phar::mapPharReads the currently executed file (a phar) and registers its manifest

Beschreibung

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

This static method can only be used inside a Phar archive's loader stub in order to initialize the phar when it is directly executed, or when it is included in another script.

Parameter-Liste

alias

The alias that can be used in phar:// URLs to refer to this archive, rather than its full path.

offset

Unused variable, here for compatibility with PEAR's PHP_Archive.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Fehler/Exceptions

PharException is thrown if not called directly within PHP execution, if no __HALT_COMPILER(); token is found in the current source file, or if the file cannot be opened for reading.

Beispiele

Beispiel #1 A Phar::mapPhar() example

mapPhar should be used only inside a phar's loader stub. Use loadPhar to load an external phar into memory.

Here is a sample Phar loader stub that uses 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();

Siehe auch

add a note

User Contributed Notes 1 note

up
1
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()'sSee for example https://github.com/zendtech/ZendOptimizerPlus/issues/115#issuecomment-25612769 for the issue in the opcache module.
To Top