使用PHP的反射Reflection获取对象信息

PHP5添加了一项新的功能:Reflection。这个功能使得程序员可以reverse-engineer class, interface,function,method and extension。通过PHP代码,就可以得到某object的所有信息,并且可以和它交互。

PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档案等等。同时也可以对现有的ZIP包进行添加或删除文件。

官方网站:http://www.phpconcept.net/pclzip/

最近在开发我的Wordpress插件ShareLink,在这过程中,发现了PclZip这个操作zip文件的PHP类,不得不推荐下。简单、易用、强大是我对它的评价。

还有另外一个推荐的原因就是在它的源码里面让我发现了一个PHP函数参数的淫荡用法。下面将举例说明。

生成zip文件

用法一:

<?php

include_once('pclzip.lib.php');

$archive = new PclZip('archive.zip');

$v_list = $archive->create('file.txt,data/text.txt,folder');

if ($v_list == 0) {

die("Error : ".$archive->errorInfo(true));

}

?>

用法二:

<?php

include_once('pclzip.lib.php');

$archive = new PclZip('archive.zip');

$v_list = $archive->create('data/file.txt,data/text.txt',

PCLZIP_OPT_REMOVE_PATH, 'data',

                            PCLZIP_OPT_ADD_PATH, 'install');

if ($v_list == 0) {

die("Error : ".$archive->errorInfo(true));

}

?>

看见create方法的参数没有,再看看方法原型你就知道如何淫荡了。至少我还没有这样用过。

以下为一个简单的压缩全站进行备份的代码:

<?php

require_once('pclzip.lib.php');

$zip = new PclZip("archive.zip");

$v_list = $zip->create($_SERVER['DOCUMENT_ROOT'] ,PCLZIP_OPT_REMOVE_PATH,$_SERVER['DOCUMENT_ROOT']);

if($v_list == 0){ echo '异常:'.$z->errorInfo(true); }

else { echo '备份成功'; }

?>

其他使用方法:

<?php

//解压缩到extract/folder/这个目录中     

$list = $archive->extract(PCLZIP_OPT_PATH, "extract/folder/");     


//增加这个目录在压缩档中,完成以后压缩档里面会有backup这个目录,backup里面会有这两个档案     

$list = $archive->create("file.txt,image.gif",PCLZIP_OPT_ADD_PATH, "backup");     


//去掉部份的路径,这里完成后会变成test/file.txt     

$list = $archive->add("/usr/local/user/test/file.txt",PCLZIP_OPT_REMOVE_PATH, "/usr/local/user");     


//把所有路径都去掉,这个压缩档建立完后,里面就只会有file.txt跟image.gif,不会有目录了     

$list = $archive->create("data/file.txt images/image.gif",PCLZIP_OPT_REMOVE_ALL_PATH);     


//把解压缩出来的档案的CHMOD设成0777     

$list = $archive->extract(PCLZIP_OPT_SET_CHMOD, 0777);     


//解压缩部份的档案,这个参数是使用档案名称判别     

//引数可以用下面这样的阵列     

$rule_list[0] = 'test/aaa.txt';     

$rule_list[1] = 'test/ddd.txt';     

//或是下面这样,一个字串中,用逗号分隔每个要解压缩的档案     

$rule_list = "test/aaa.txt,test/ddd.txt";     

$list = $archive->extract(PCLZIP_OPT_BY_NAME,$rule_list);     


//解压缩部份的档案,使用php的ereg()函式,档案名称有比对成功的都会被解压缩     

$list = $archive->extract(PCLZIP_OPT_BY_EREG, "aa");     


//解压缩部份的档案,使用php的preg_match()函式,档案名称有比对成功的都会被解压缩     

$list = $archive->extract(PCLZIP_OPT_BY_PREG, "/^bb/");     

//上面这两个函式如果不懂的话,请先研究正规表示法(Regular Expression)     


//依照阵列中元素的索引解压缩,可是我不太懂index啥 = =a     

$list = $archive->extract(PCLZIP_OPT_BY_INDEX, array('0-1','6-7'));     


//将一个档案内容解压缩成一个字串     

$list = $archive->extract(PCLZIP_OPT_BY_NAME, "data/readme.txt",PCLZIP_OPT_EXTRACT_AS_STRING);     


//将一个档案内容解压缩完后直接输出(echo)     

$list = $archive->extract(PCLZIP_OPT_BY_NAME, "data/readme.txt",PCLZIP_OPT_EXTRACT_IN_OUTPUT);     


//将一个档案加入一个压缩档中,但不会对此档案压缩     

$list = $archive->add("data/file.txt", PCLZIP_OPT_NO_COMPRESSION);     


//对此压缩档增加一个注解,如果原本就有注解的话会被覆盖掉     

$list = $archive->create("data", PCLZIP_OPT_COMMENT, "Add a comment");     


//对此压缩档增加一个注解,如果原本就有注解的话会接在后面     

$list = $archive->add("data", PCLZIP_OPT_ADD_COMMENT, "Add a comment after the existing one");     


//对此压缩档增加一个注解,如果原本就有注解的话会放在原本的注解前面     

$list = $archive->add("data", PCLZIP_OPT_PREPEND_COMMENT, "Add a comment before the existing one");     

?>

类库下载:pclzip-2-8-2.zip

你是否有这样的烦恼,想学习高级技术,缺乏好的高级学习资料,收集了部分12年网站架构师授课的TP5、laravel、swoole、swoft、高并发、分布式等资料,现在免费分享给大家,官方群:820469789,大牛带你装逼带你飞

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容

  • 7z --help7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor ...
    WorldPeace_hp阅读 21,127评论 0 3
  • It's Thursday. Chapter 03: Little Georgie Sings a Song IT...
    Mr_Oldman阅读 290评论 0 0
  • 打算开始新的生活,结果面试都有点不理想。 回不去的过往,不确定的将来。 何去何从……
    三月薄荷糖阅读 145评论 0 0
  • “其实一开始我是拒绝的!”呵呵。一开始听到这个计划的我真心是拒绝的,因为虽然近期感觉自己改变良多,但仍然没有多到...
    逍遥的小鱼阅读 192评论 0 0
  • 这篇教程的前提是你有npm和git,另外我已经在github上创建好了一个github pages项目。下面开始:...
    Marvinxx阅读 173评论 0 0