Esta biblioteca permite lidar com novos arquivos ZIP e TAR sem a necessidade de extensões especiais de PHP (GZ e BZIP são necessários para a compressão). Ele pode criar novos arquivos ou extrair os existentes.
Para simplificar as coisas, a modificação (adicionando ou removendo arquivos) dos arquivos existentes não é suportada.
Use compositor:
php composer.phar require splitbrain/php-archive
O uso para as classes de zip e alcatrão é basicamente o mesmo. Aqui estão alguns exemplos para trabalhar com alcatrão para você começar.
Verifique os documentos da API para obter mais informações.
require_once ' vendor/autoload.php ' ;
use splitbrain PHPArchive Tar ;
// To list the contents of an existing TAR archive, open() it and use
// contents() on it:
$ tar = new Tar ();
$ tar -> open ( ' myfile.tgz ' );
$ toc = $ tar -> contents ();
print_r ( $ toc ); // array of FileInfo objects
// To extract the contents of an existing TAR archive, open() it and use
// extract() on it:
$ tar = new Tar ();
$ tar -> open ( ' myfile.tgz ' );
$ tar -> extract ( ' /tmp ' );
// To create a new TAR archive directly on the filesystem (low memory
// requirements), create() it:
$ tar = new Tar ();
$ tar -> create ( ' myfile.tgz ' );
$ tar -> addFile (...);
$ tar -> addData (...);
. . .
$ tar -> close ();
// To create a TAR archive directly in memory, create() it, add*()
// files and then either save() or getArchive() it:
$ tar = new Tar ();
$ tar -> setCompression ( 9 , Archive:: COMPRESS_BZIP );
$ tar -> create ();
$ tar -> addFile (...);
$ tar -> addData (...);
. . .
$ tar -> save ( ' myfile.tbz ' ); // compresses and saves it
echo $ tar -> getArchive (); // compresses and returns it As diferenças entre alcatrão e zip: alcatrão são compactadas como um todo, enquanto os zips comprimem cada arquivo individualmente. Portanto, você pode chamar setCompression antes de cada chamada de função addFile() e addData() .
A classe FileInfo pode ser usada para especificar informações adicionais, como propriedade ou permissões ao adicionar um arquivo a um arquivo.