PHP8 Phar::setStub

2024-02-21 14:39 更新

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

Phar::setStub — 用于設(shè)置 Phar 存檔的 PHP 加載器或引導(dǎo)存根

說(shuō)明

public Phar::setStub(resource|string $stub, int $length = -1): bool
注意:此方法需要 將 中的 設(shè)為 以適合 Phar 對(duì)象. 否則, 將拋出PharException.php.iniphar.readonly0

此方法用于將 PHP 引導(dǎo)加載器存根添加到新的 Phar 存檔中,或者 替換現(xiàn)有 Phar 存檔中的加載程序存根。

每當(dāng)直接包含存檔時(shí),都會(huì)使用 Phar 存檔的加載器存根 如本例所示:

<?php
include 'myphar.phar';
?>

通過(guò)流包裝器包含文件時(shí),不會(huì)訪問(wèn)加載器,如下所示:phar

<?php
include 'phar://myphar.phar/somefile.php';
?>

參數(shù) 

stub

要用作此可執(zhí)行存根的字符串或開放流句柄 法爾檔案。

length

返回值 

成功時(shí)返回 true, 或者在失敗時(shí)返回 false。

錯(cuò)誤/異常 

如果啟用了 phar.readonly,則會(huì)引發(fā) UnexpectedValueException 在php.ini。如果遇到任何問(wèn)題,則拋出 PharException 刷新對(duì)磁盤的更改。

更新日志 

版本說(shuō)明
8.3.0現(xiàn)在不推薦使用資源和 a 調(diào)用 Phar::setStub()。此類調(diào)用應(yīng)替換為:length$phar->setStub(stream_get_contents($resource));

示例 

示例 #1 A Phar::setStub() example

<?php
try {
    $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
    $p['a.php'] = '<?php var_dump("Hello");';
    $p->setStub('<?php var_dump("First"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>');
    include 'phar://brandnewphar.phar/a.php';
    var_dump($p->getStub());
    $p['b.php'] = '<?php var_dump("World");';
    $p->setStub('<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>');
    include 'phar://brandnewphar.phar/b.php';
    var_dump($p->getStub());
} catch (Exception $e) {
    echo 'Write operations failed on brandnewphar.phar: ', $e;
}
?>

以上示例會(huì)輸出:

string(5) "Hello"
string(82) "<?php var_dump("First"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>"
string(5) "World"
string(83) "<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>"

參見(jiàn) 

  • Phar::getStub() - 返回 Phar 存檔的 PHP 加載器或引導(dǎo)存根
  • Phar::createDefaultStub() - 創(chuàng)建特定于 phar 文件格式的存根


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)