Forum und email

Phar->getStub

(PECL phar:1.0.0-1.2.1)

Phar->getStub — Phar アーカイブの PHP ローダーあるいは起動スタブを返す

説明

string Phar->getStub ( void )

Phar アーカイブが tar や zip のようなその他のアーカイブフォーマットと違う点のひとつに、 アーカイブを展開せずに直接中身を実行できるような仕組みを提供しており、 アプリケーションやライブラリを配布することを考えて設計されているということがあります。 これを実現するために、Phar アーカイブは起動用ローダーあるいは スタブ を含んでいます。 これは PHP で書かれており、任意の動作を行えます。

警告

スタブの最後は、必ず __HALT_COMPILER(); で終わらなければなりません。 それ以外は有効な Phar アーカイブとして認められません。

返り値

現在の Phar アーカイブの起動用ローダー (スタブ) の内容を文字列で返します。

エラー / 例外

スタブを Phar アーカイブから読み込めない場合に RuntimeException をスローします。

Example#1 Phar->getStub() の例

$p = new Phar('/path/to/my.phar', 0, 'my.phar');
echo $p->getStub();
echo "==NEXT==\n";
$p->setStub("<?php
function __autoload($class)
{
    include 
'phar://' str_replace('_''/'$class);
}
Phar::mapPhar('myphar.phar');
include 
'phar://myphar.phar/startup.php';
__HALT_COMPILER();
");
echo $p->getStub();

上の例の出力は以下となります。

<?php __HALT_COMPILER();
==NEXT==
<?php
function __autoload($class)
{
    include 'phar://' . str_replace('_', '/', $class);
}
Phar::mapPhar('myphar.phar');
include 'phar://myphar.phar/startup.php';
__HALT_COMPILER();