Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
Archive Class Reference

Public Member Functions

 pack ($source, $destination='packed.tgz', $skipRoot=false)
 
 unpack ($source, $destination='.', $tillTar=false, $clearInterm=true)
 
 extract ($file, $source, $destination='.')
 
 isArchive ($file)
 
 isTar ($file)
 

Data Fields

const DEFAULT_ARCHIVER = 'gz'
 
const TAPE_ARCHIVER = 'tar'
 

Protected Member Functions

 _getArchiver ($extension)
 
 _getArchivers ($source)
 

Protected Attributes

 $_archiver = null
 
 $_formats
 

Detailed Description

Class to work with archives

Author
Magento Core Team core@.nosp@m.mage.nosp@m.ntoco.nosp@m.mmer.nosp@m.ce.co.nosp@m.m

Definition at line 17 of file Archive.php.

Member Function Documentation

◆ _getArchiver()

_getArchiver (   $extension)
protected

Create object of current archiver by $extension.

Parameters
string$extension
Returns
Tar|Gz|Bz

Definition at line 63 of file Archive.php.

64  {
65  $extension = strtolower($extension);
66  $format = isset($this->_formats[$extension]) ? $this->_formats[$extension] : self::DEFAULT_ARCHIVER;
67  $class = '\\Magento\Framework\Archive\\' . ucfirst($format);
68  $this->_archiver = new $class();
69  return $this->_archiver;
70  }
$_option $_optionId $class
Definition: date.phtml:13
$format
Definition: list.phtml:12

◆ _getArchivers()

_getArchivers (   $source)
protected

Split current format to list of archivers.

Parameters
string$source
Returns
string[]|string

Definition at line 78 of file Archive.php.

79  {
80  $ext = pathinfo($source, PATHINFO_EXTENSION);
81  if (!empty($this->_formats[$ext])) {
82  return explode('.', $this->_formats[$ext]);
83  }
84  return [];
85  }
$source
Definition: source.php:23

◆ extract()

extract (   $file,
  $source,
  $destination = '.' 
)

Extract one file from TAR (Tape Archiver).

Parameters
string$file
string$source
string$destination
Returns
string Path to file

Definition at line 161 of file Archive.php.

162  {
163  $tarFile = $this->unpack($source, $destination, true);
164  $resFile = $this->_getArchiver(self::TAPE_ARCHIVER)->extract($file, $tarFile, $destination);
165  if (!$this->isTar($source)) {
166  unlink($tarFile);
167  }
168  return $resFile;
169  }
_getArchiver($extension)
Definition: Archive.php:63
unpack($source, $destination='.', $tillTar=false, $clearInterm=true)
Definition: Archive.php:125
$source
Definition: source.php:23

◆ isArchive()

isArchive (   $file)

Check file is archive.

Parameters
string$file
Returns
boolean

Definition at line 177 of file Archive.php.

178  {
179  $archivers = $this->_getArchivers($file);
180  if (count($archivers)) {
181  return true;
182  }
183  return false;
184  }

◆ isTar()

isTar (   $file)

Check file is TAR.

Parameters
string$file
Returns
boolean

Definition at line 192 of file Archive.php.

193  {
194  $archivers = $this->_getArchivers($file);
195  if (count($archivers) == 1 && $archivers[0] == self::TAPE_ARCHIVER) {
196  return true;
197  }
198  return false;
199  }

◆ pack()

pack (   $source,
  $destination = 'packed.tgz',
  $skipRoot = false 
)

Pack file or directory to archivers are parsed from extension.

Parameters
string$source
string$destination
boolean$skipRootskip first level parent
Returns
string Path to file

Definition at line 95 of file Archive.php.

96  {
97  $archivers = $this->_getArchivers($destination);
98  $interimSource = '';
99  for ($i = 0; $i < count($archivers); $i++) {
100  if ($i == count($archivers) - 1) {
101  $packed = $destination;
102  } else {
103  $packed = dirname($destination) . '/~tmp-' . microtime(true) . $archivers[$i] . '.' . $archivers[$i];
104  }
105  $source = $this->_getArchiver($archivers[$i])->pack($source, $packed, $skipRoot);
106  if ($interimSource && $i < count($archivers)) {
107  unlink($interimSource);
108  }
109  $interimSource = $source;
110  }
111  return $source;
112  }
_getArchiver($extension)
Definition: Archive.php:63
$source
Definition: source.php:23
$i
Definition: gallery.phtml:31

◆ unpack()

unpack (   $source,
  $destination = '.',
  $tillTar = false,
  $clearInterm = true 
)

Unpack file from archivers are parsed from extension. If $tillTar == true unpack file from archivers till meet TAR archiver.

Parameters
string$source
string$destination
bool$tillTar
bool$clearInterm
Returns
string Path to file

Definition at line 125 of file Archive.php.

126  {
127  $archivers = $this->_getArchivers($source);
128  $interimSource = '';
129  for ($i = count($archivers) - 1; $i >= 0; $i--) {
130  if ($tillTar && $archivers[$i] == self::TAPE_ARCHIVER) {
131  break;
132  }
133  if ($i == 0) {
134  $packed = rtrim($destination, '/') . '/';
135  } else {
136  $packed = rtrim(
137  $destination,
138  '/'
139  ) . '/~tmp-' . microtime(
140  true
141  ) . $archivers[$i - 1] . '.' . $archivers[$i - 1];
142  }
143  $source = $this->_getArchiver($archivers[$i])->unpack($source, $packed);
144 
145  if ($clearInterm && $interimSource && $i >= 0) {
146  unlink($interimSource);
147  }
148  $interimSource = $source;
149  }
150  return $source;
151  }
_getArchiver($extension)
Definition: Archive.php:63
$source
Definition: source.php:23
$i
Definition: gallery.phtml:31

Field Documentation

◆ $_archiver

$_archiver = null
protected

Definition at line 34 of file Archive.php.

◆ $_formats

$_formats
protected
Initial value:
= [
'tar' => 'tar',
'gz' => 'gz',
'gzip' => 'gz',
'tgz' => 'tar.gz',
'tgzip' => 'tar.gz',
'bz' => 'bz',
'bzip' => 'bz',
'bzip2' => 'bz',
'bz2' => 'bz',
'tbz' => 'tar.bz',
'tbzip' => 'tar.bz',
'tbz2' => 'tar.bz',
'tbzip2' => 'tar.bz',
]

Definition at line 41 of file Archive.php.

◆ DEFAULT_ARCHIVER

const DEFAULT_ARCHIVER = 'gz'

Archiver is used for compress.

Definition at line 22 of file Archive.php.

◆ TAPE_ARCHIVER

const TAPE_ARCHIVER = 'tar'

Default packer for directory.

Definition at line 27 of file Archive.php.


The documentation for this class was generated from the following file: