array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'phar.interceptfilefuncs.php', 1 => 'Phar::interceptFileFuncs', ), 'up' => array ( 0 => 'class.phar.php', 1 => 'Phar', ), 'prev' => array ( 0 => 'phar.hasmetadata.php', 1 => 'Phar::hasMetadata', ), 'next' => array ( 0 => 'phar.isbuffering.php', 1 => 'Phar::isBuffering', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/phar/Phar/interceptFileFuncs.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
Phar::interceptFileFuncs — fopen、file_get_contents、opendir などの stat 関連の関数をすべて phar に横取りさせる
fopen() や readfile()、 file_get_contents()、opendir() などの stat 関連の関数をすべて phar に横取りさせます。 phar アーカイブ内で相対パスを指定してこれらの関数がコールされると、 それが phar アーカイブ内のファイルへのアクセスに変更されます。 絶対パスの場合は、ファイルシステム上の外部ファイルを指すものとみなされます。
この関数を使用すると、ハードディスク上で動作するように作られている PHP アプリケーションを phar アプリケーションにまとめられるようになります。
パラメータはありません。
例1 Phar::interceptFileFuncs() の例
<?php
Phar::interceptFileFuncs();
include 'phar://' . __FILE__ . '/file.php';
?>
phar ファイルの場所が /path/to/myphar.phar
で、その中に
file.php
と
file2.txt
が存在するものとします。
file.php
にこのようなコードが含まれていた場合、
例2 Phar::interceptFileFuncs() の例
<?php
echo file_get_contents('file2.txt');
?>
通常は、PHP はカレントディレクトリの file2.txt
を探します。カレントディレクトリの場所は、file.php と同じ場所かあるいは
コマンドラインで実行した際のカレントディレクトリとなります。
Phar::interceptFileFuncs() を使用した場合は、
PHP はカレントディレクトリを phar:///path/to/myphar.phar/
とみなし、上のコードの場合は
phar:///path/to/myphar.phar/file2.txt
をオープンします。