【发布时间】:2015-06-18 03:50:05
【问题描述】:
我知道\Phar 和\PharData 存在,但到目前为止他们提供的方法我遇到了一些问题。在确定使用哪个Phar*::method() 以尝试提取存档并处理其中包含的文件之前,我仍然必须通过任何方式检测 mime 类型/文件类型。
是否有一个我可以包含的首选“简单按钮”类(也许可以通过 composer 获得一些包),它可以在非常高的级别上处理这个问题?还是我没有正确使用Phar 和朋友,或者到目前为止需要重新RTM?
基本上,我想做以下事情(这是我现在控制的 CLI 脚本,因此安全性虽然对这类事情很重要,但目前处于次要地位):
- 检测文件可能是某种存档。
- 验证它似乎是以下之一:
.tar、.gz、.tar.gz或.zip。 - 如果是这样,请尝试提取存档,然后解析其实际文件的内容。
是否有一个我不知道的“简单按钮”,或者我是否需要构建一些逻辑来尽可能地猜测它可能是什么类型的存档,然后尝试使用适当的Phar* 方法来尝试提取它的文件并执行我需要对它们进行的任何工作?
我希望我写它的方式是有意义的。如果有人基本上已经弄清楚了所有这些,我会尽量避免在这里为一个小型项目重新发明轮子。
【问题讨论】:
-
$ext = pathinfo($filename, PATHINFO_EXTENSION); -
@Abdulla 是的,我一直在寻找一种高级解决方案,可以让我变得更懒惰,所以我不必编写样板代码来识别然后提取可能的档案来获取文件.就像我说的那样,如果有某种我可以利用和依赖的“交钥匙”解决方案,我只是想避免重新发明轮子。
-
这里有
Phar::isCompressed函数,这可能就是你要找的。span> -
@l'L'l 嗯。是的,我似乎忽略了那个方法,但我有点希望这是一个静态方法,它只会返回 true 或 false。如果它不是可接受的文件,它会在类构造函数中引发异常。好像我遗漏了一些东西,但是如果我必须在检查它是否是可接受的文件之前基本上检查它是否是一个可接受的文件,那么我能从中得到什么?
-
@l'L'l 好吧,我肯定错过了那个小花絮。谢谢!