Phar 및 PharData 클래스

Phar 클래스는 Phar 아카이브의 읽기 및 조작은 물론 RecursiveDirectoryIterator 클래스의 상속된 기능을 통한 반복을 지원합니다. ArrayAccess 인터페이스에 대한 지원으로 Phar 아카이브 내의 파일은 연관 어레이의 일부인 것처럼 액세스할 수 있습니다.

PharData 클래스는 Phar를 확장하고 php.ini에서 phar.readonly=1인 경우에도 실행 불가능한(데이터) tar 및 zip 아카이브를 만들고 수정할 수 있습니다. 이와 같이 PharData::setAlias()PharData::setStub()는 둘 다 비활성화됩니다. 별칭과 스텁의 개념은 실행 가능한 phar 아카이브에 고유하기 때문입니다.

Phar 아카이브를 생성할 때 전체 경로가 Phar 객체 생성자에 전달되어야 한다는 점에 유의하는 것이 중요합니다. 상대 경로는 초기화에 실패합니다.

$p가 다음과 같이 초기화된 Phar 객체라고 가정합니다.

                  
<?php
$p = new Phar('/path/to/myphar.phar', 0, 'myphar.phar');
?>
                  
                

빈 Phar 아카이브가 /path/to/myphar.phar에 생성되거나 /path/to/myphar.phar가 이미 존재하는 경우 다시 열립니다. 리터럴 myphar.phar는 다음과 같이 URL에서 /path/to/myphar.phar를 참조하는 데 사용할 수 있는 별칭의 개념을 보여줍니다.

                  
<?php
// these two calls to file_get_contents() are equivalent if
// /path/to/myphar.phar has an explicit alias of "myphar.phar"
// in its manifest, or if the phar was initialized with the
// previous example's Phar object setup
$f = file_get_contents('phar:///path/to/myphar.phar/whatever.txt');
$f = file_get_contents('phar://myphar.phar/whatever.txt');
?>
                  
                

새로 생성된 $p Phar 개체를 사용하면 다음이 가능합니다.

  • $a = $p['file.php']는 phar://myphar.phar/file.php의 내용을 참조하는 PharFileInfo 클래스를 생성합니다.
  • $p['file.php'] = $v는 새 파일(phar://myphar.phar/file.php)을 생성하거나 myphar.phar 내의 기존 파일을 덮어씁니다. $v는 문자열 또는 열린 파일 포인터일 수 있으며, 이 경우 파일의 전체 내용이 새 파일을 만드는 데 사용됩니다. $p->addFromString('file.php', $v)은 기능적으로 위와 동일합니다. $p->addFile('/path/to/file.php', 'file.php')을 사용하여 파일의 내용을 추가하는 것도 가능합니다. 마지막으로 $p->addEmptyDir('empty')로 빈 디렉토리를 생성할 수 있습니다.
  • isset($p['file.php'])을 사용하여 phar://myphar.phar/file.phpmyphar.phar 내에 존재하는지 확인할 수 있습니다.
  • unset($p['file.php'])phar://myphar.phar/file.phpmyphar.phar에서 지웁니다.

또한 Phar 객체는 Phar::getMetadata()를 통해 Phar 관련 메타데이터에 액세스하는 유일한 방법이며 Phar::getStub()Phar::setStub()를 통해 Phar 아카이브의 PHP 로더 스텁을 설정하거나 검색하는 유일한 방법입니다. . 또한 한 번에 전체 Phar 아카이브에 대한 압축은 Phar 클래스를 통해서만 조작할 수 있습니다.

Phar 개체 기능의 전체 목록은 아래에 설명되어 있습니다.

PharFileInfo 클래스는 SplFileInfo 클래스를 확장하고 압축 및 메타데이터 조작과 같이 Phar 내에 포함된 파일의 Phar 관련 세부 정보를 조작하기 위한 여러 메서드를 추가합니다.