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.readonly
를 0
으로 설정해야 합니다. 그렇지 않으면 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(); ?>"
기타
- Phar::getStub() - Phar 아카이브의 PHP 로더 또는 부트스트랩 스텁 반환
- Phar::createDefaultStub() - phar 파일 형식 특정 스텁 만들기