それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ZipArchive は fopen wrapper を使えない。

タイトルのとおりです。

phpwindows の zip ファイル・アーカイブ形式を扱うには ZipAcrchive の事実上一択になるのですが。

<?php

$z = new ZipArchive;
$z->open("sample.zip");

これでファイルが開けるのですが、fopen wrapper が使えない

fopen wrapper とは?

file_get_contents が何でも開ける、PHPを最強にするツールですよね。

fopen で開けるファイルのアレコレを様々なプロトコルスキーマ)に対応させる奴

http://
https://
ssh://
php://temp
php://memory
php://input
php://stdin

などなど、知ってると面倒な処理が、楽になる。

ZipArchive では使えない

<?php

$z = new ZipArchive;
$z->open("http://......");
var_dump($z);

結果は虚しい。

ZipArchive を使って php://memory で展開したり、 http からファイルを取ってこようと思ったら一切できない。

バイナリ(String)もだめ

一旦データを変数に展開して、変数値からロードしようとしても出来ない。

<?php

$z = new ZipArchive;
$data = file_get_contents("http://......");
$z->open($z);//出来ない
var_dump($z);

phpのC extension に手を入れるのは面倒だし、php のコミュニティは検索スパムだしもどかしい所。

せめて、バイナリから開けたら、なんとかなったのに。

参考資料

http://php.net/manual/en/ziparchive.open.php