Phar::setStub

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

Phar::setStub — Phar 아카이브의 PHP 로더 또는 부트스트랩 스텁을 설정하는 데 사용됩니다.


설명

public Phar::setStub(string $stub, int $len = -1): bool

메모: 이 메소드는 Phar 객체에 대해 작동하기 위해 php.ini 설정 phar.readonly0으로 설정해야 합니다. 그렇지 않으면 PharException이 발생합니다.

이 메소드는 PHP 부트스트랩 로더 스텁을 새 Phar 아카이브에 추가하거나 기존 Phar 아카이브의 로더 스텁을 교체하는 데 사용됩니다.

다음 예와 같이 아카이브가 직접 포함될 때마다 Phar 아카이브의 로더 스텁이 사용됩니다.

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

다음과 같이 phar 스트림 래퍼를 통해 파일을 포함할 때 로더에 액세스할 수 없습니다.

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

매개변수

stub
이 phar 아카이브의 실행 가능한 스텁으로 사용할 문자열 또는 열린 스트림 핸들입니다.
len

반환 값

성공하면 true를, 실패하면 false를 반환합니다.


오류/예외

php.ini에서 phar.readonly가 활성화된 경우 UnexpectedValueException이 발생합니다. 디스크에 변경 사항을 플러시하는 데 문제가 발생하면 PharException이 발생합니다.


Examples

예제 #1 Phar::setStub() 예제

                  
<?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;
}
?>
                  
                

위의 예는 다음을 출력합니다.

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(); ?>"
                

기타