Archive_Tar
в своей последней версии еще не поддерживает такую функциональность из коробки. Часть функциональности находится в _addFile()
, а другая часть - _addString()
.
Самый простой, возможно, простирается от Archive_Tar
и прокси-сервер всех вызовов до _writeHeaderBlock()
, который является общедоступным, применяя карту по параметру имени файла, чтобы переименовать ее при записи в заголовки.
class Patched_Archive_Tar extends Archive_Tar
{
var $renameMap = array();
function _writeHeaderBlock($p_filename, $p_size, $p_mtime=0, $p_perms=0,
$p_type='', $p_uid=0, $p_gid=0)
{
return parent::_writeHeaderBlock($this->_translateFilename($p_filename),
$p_size, $p_mtime=0, $p_perms=0,
$p_type='', $p_uid=0, $p_gid=0);
}
function _translateFilename($orignal)
{
$map = $this->renameMap;
if (isset($map[$orignal])) {
return $map[$orignal];
}
return $original;
}
}
Использование:
$obj = new Patched_Archive_Tar('dummy.tar'); // name of archive
$files = array('mystuff/ad.gif',
'mystuff/alcon.doc.t',
'mystuff/alcon.xls.t'); // files to store in archive
$obj->renameMap = array(
'mystuff/alcon.doc.t' => 'mystuff/alcon.doc',
'mystuff/alcon.xls.t' => 'mystuff/alcon.xls',
) // files to rename
if ($obj->create($files)) {
echo 'Created successfully!';
} else {
echo 'Error in file creation';
}
Это быстро и грязно, но мы надеемся, worky. Для чего-то лучше увидеть функцию, которую я заметил в начале _addFile()
и _addString()
, вы в основном хотите другой, который может добавить файл (как с _addFile()
), указав имя файла (как с _addString()
).
Спасибо. Хотя похоже, что _writeHeaderBlock вызывается только при использовании _addString(), а не _addFile(), так что это не сработает. Но ваш второй пункт выглядит как способ, чтобы расширить и функцию, чтобы иметь возможность добавлять файлы с помощью модификатора. – user2248522
_addFile() должен вызывать _writeHeader(), который затем должен вызывать _writeHeaderBlock(). Не так ли? – hakre
@ duckboy81: Спасибо за ваше предложение по редактированию. Для меня смысл./ref: http://stackoverflow.com/review/spected-edits/12939455 – hakre