Phar::mapPhar

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

Phar::mapPhar — Lit le phar exĂ©cutĂ© et charge son manifeste

Description

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

Cette mĂ©thode statique peut ĂȘtre utilisĂ©e seulement au sein du conteneur de chargement d'une archive Phar pour initialiser le phar quand il est exĂ©cutĂ© directement ou quand il est inclus dans un autre script.

Liste de paramĂštres

alias

L'alias qui peut ĂȘtre utilisĂ© dans l'URL phar:// pour se rĂ©fĂ©rer Ă  l'archive plutĂŽt que d'utiliser son chemin complet.

offset

Variable inutilisée, présente par souci de compatibilité avec la bibliothÚque PHP_Archive de PEAR.

Valeurs de retour

Cette fonction retourne true en cas de succĂšs ou false si une erreur survient.

Erreurs / Exceptions

Une exception PharException est levĂ©e si la mĂ©thode n'est pas appelĂ©e directement au sein de l'exĂ©cution de PHP, si aucun jeton __HALT_COMPILER(); n'est trouvĂ© dans le fichier source actuel ou si le fichier ne peut pas ĂȘtre ouvert en lecture.

Exemples

Exemple #1 Exemple avec Phar::mapPhar()

mapPhar ne doit ĂȘtre utilisĂ© qu'au sein du conteneur de chargement d'un phar. Utiliser loadPhar pour charger un phar externe en mĂ©moire.

Voici un exemple de conteneur de chargement Phar qui utilise mapPhar.

<?php
function __autoload($class)
{
include
'phar://mon.phar/' . str_replace('_', '/', $class) . '.php';
}
try {
Phar::mapPhar('mon.phar');
include
'phar://mon.phar/demarrage.php';
} catch (
PharException $e) {
echo
$e->getMessage();
die(
'Ne peut pas initialiser le Phar');
}
__HALT_COMPILER();

Voir aussi

add a note

User Contributed Notes 1 note

up
1
phofstetter at sensational dot ch ¶
12 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.