Phar::mapPhar
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)
Phar::mapPhar — 現在実行されている (phar 形式の) ファイルを読み込み、その内容を登録する
説明
このstaticメソッドは、直接実行されたときや 他のスクリプトからインクルードされたときに Phar アーカイブのローダスタブ内で使用され、 phar を初期化します。
パラメータ
alias
-
このアーカイブを参照する際にフルパスのかわりに使用する、
phar://
形式の URL。 offset
-
未使用。PEAR の PHP_Archive との互換性のために用意しています。
エラー / 例外
PHP から直接コールされなかった場合、 ソースファイル内に __HALT_COMPILER(); トークンがなかった場合、 あるいはファイルを読み込みモードでオープンできなかった場合に PharException をスローします。
例
例1 Phar::mapPhar() の例
mapPhar は、phar のローダスタブ内でのみ使用します。 外部の phar をメモリに読み込むには、loadPhar を使用します。
mapPhar を使用する Phar ローダスタブの例は、このようになります。
<?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('Phar を初期化できません');
}
__HALT_COMPILER();
+add a note
User Contributed Notes 1 note
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.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google