zorx / zipper
这是一个针对 ZipArchive 方法的简单助手,具有方便的功能
Requires
- php: >=5.4.0
- illuminate/filesystem: 5.x
- illuminate/support: 5.x
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-14 19:42:08 UTC
README
#Zipper
这是一个围绕 ZipArchive 方法简单包装并包含一些方便功能的工具。
##安装
- 将此包添加到
composer.json
文件中所需包的列表中
- 对于 Laravel 5:
"chumper/zipper": "0.6.x"
- 对于 Laravel 4:
"chumper/zipper": "0.5.x"
-
运行
composer update
-
转到
app/config/app.php
- 添加到 providers
'Chumper\Zipper\ZipperServiceProvider'
- 添加到 aliases
'Zipper' => 'Chumper\Zipper\Zipper'
现在您可以使用 Zipper
别名访问 Zipper。
##简单示例
$files = glob('public/files/*'); Zipper::make('public/test.zip')->add($files);
- 默认情况下,该包将在项目路由文件夹中创建
test.zip
文件,但在上面的示例中,我们将其更改为project_route/public/
。
####另一个示例
$zipper = new \Chumper\Zipper\Zipper; $zipper->make('test.zip')->folder('test')->add('composer.json'); $zipper->zip('test.zip')->folder('test')->add('composer.json','test'); $zipper->remove('composer.lock'); $zipper->folder('mySuperPackage')->add( array( 'vendor', 'composer.json' ), ); $zipper->getFileContent('mySuperPackage/composer.json'); $zipper->make('test.zip')->extractTo('',array('mySuperPackage/composer.json'),Zipper::WHITELIST);
除了 getFileContent
、getStatus
、close
和 extractTo
(这些必须放在链的末尾)之外,您可以轻松地链式调用大多数函数。
我编写这个小包的主要原因是 extractTo
方法,因为它允许在解压 zip 文件时非常灵活。例如,您可以实现一个更新方法,该方法将仅覆盖已更改的文件。
##函数
make($pathToFile)
创建
或 打开
一个 zip 归档;如果文件不存在,它将创建一个新的文件。它将返回 Zipper 实例,以便您可以轻松地链式调用。
add($files/folder)
您可以为文件或文件夹添加一个数组,或者添加一个文件夹,其中的所有文件都将被添加,例如,从第一个示例中,我们也可以这样做 $files = 'public/files/';
。
addString($filename, $content)
通过指定名称和内容作为字符串将单个文件添加到 zip 中。
remove($file/s)
从 zip 中移除单个文件或文件数组。
folder($folder)
指定要 '添加文件到' 或 '从 zip 中移除文件' 的文件夹,例如
Zipper::make('test.zip')->folder('test')->add('composer.json');
Zipper::make('test.zip')->folder('test')->remove('composer.json');
home()
重置文件夹指针。
zip($fileName)
使用 ZipRepository 进行文件处理。
getFileContent($filePath)
获取 zip 中文件的内容。这将返回内容或 false。
getStatus()
获取 zip 的打开状态为整数。
close()
关闭 zip 并写入所有更改。
extractTo($path)
将 zip 归档的内容提取到指定位置,例如
Zipper::make('test.zip')->folder('test')->extractTo('foo');
这将在 zip 文件中的 test
文件夹中,并将该文件夹的内容仅提取到文件夹 foo
中,这相当于使用 Zipper::WHITELIST
。
此命令非常方便,可以仅获取 zip 文件的某部分,您还可以传递第二个和第三个参数以指定单个或文件数组,这些文件将被
列入白名单
Zipper::WHITELIST
Zipper::make('test.zip')->extractTo('public', array('vendor'), Zipper::WHITELIST);
这将把 test.zip
提取到 public
文件夹中,但 仅 提取 zip 文件中的 vendor
文件夹。
或列入黑名单
Zipper::BLACKLIST
Zipper::make('test.zip')->extractTo('public', array('vendor'), Zipper::BLACKLIST);
这将把 test.zip
提取到 public
文件夹中,但 zip 文件中的 vendor
文件夹将不会被提取。
##开发
可能添加其他压缩函数,如 rar、phar 或 bzip2 等等是个好主意。一切都已经设置好了,如果您只想进行进一步的开发,请进行分支并开发。
如果您需要其他功能或遇到错误,请将问题留到 github 上。