略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: Phar::mapPhar

2024-11-13

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

说明

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.

参数

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.

返回值

成功时返回 true, 或者在失败时返回 false

错误/异常

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.

范例

示例 #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();

参见

add a noteadd a note

User Contributed Notes 1 note

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

官方地址:https://www.php.net/manual/en/phar.mapphar.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3