[CodeIgniter2] Zip解凍クラスをライブラリに作成する
スポンサーリンク
CodeIgniterにはZip圧縮クラスはあらかじめ用意されているのですが、解凍クラスは用意されていません。
…なんでやねん。
圧縮があって解凍がないとはまったく思わず、しばらく探し続けてしまいました。どうも本当に無いみたいなので、既存のPHPライブラリを改造し、CodeIgniterのライブラリに登録することにしました。
まあ、別にCodeIgniter用ライブラリに改造しなくとも、dUnzip2をrequireしてそのまま使っても構わないのですが、CodeIgniterのライブラリとして使った方が全体の構成もCodeIgniter本来の姿に沿ったものになりますし、コードも見栄えが良いかと思います。
ということで、以下は実行メモです。
まず既存のクラスライブラリを流用するということで、dUnzip2を用いることにします。dUnzip2についてはこちらに簡単に書いています。
Step1
dUnzip2が用意できましたら、dUnzip2.inc.phpをapplication/libraries フォルダに移し、ファイル名をDunzip2inc.phpに変更します。 CodeIgniterのライブラリー命名規則で先頭が大文字である必要があるからです。”inc”の前に入っていたドットを削除しているので気をつけてください。
ファイル名は先頭が大文字でさえあれば、別にDunzip2.phpである必要はありません。好きな名前をつけてください。
Step2
クラス名を変更します。
class dUnzip2{
↓
class Dunzip2inc{
クラス名はファイル名と必ず同じにします。先頭の文字は大文字です。
Step3
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
1行目にif ( ! defined('BASEPATH')) exit('No direct script access allowed');
と記しておきます。
Step4
77行目付近の以下の部分を__construct()
に変更します。また、引数を配列で受け取り、$this->fileName
に代入する値も配列に変えます。
Function dUnzip2($fileName){ $this->fileName = $fileName; $this->compressedList = $this->centralDirList = $this->endOfCentral = Array(); }
↓
Function __construct( $array ){ $this->fileName = $array['path']; $this->compressedList = $this->centralDirList = $this->endOfCentral = Array(); }
引数を配列に変えるのは、CodeIgniterのライブラリ読み込みメソッドが第2引数に配列を受け取りデータを渡すからです。
以上で改造は終了です。
使い方
使い方はCodeIgniterの組込ライブラリと同じです。
$this->load->library( 'dunzip2inc' , array( 'path' => 'files/777.zip' ) ); $files = $this->dunzip2inc->getList(); $this->dunzip2inc->unzip( 'filename' );
$this->load->library()
でクラスを初期化します。第1引数にライブラリ名のdunzip2incを、第2引数に展開したいzipファイルのパスを配列で渡します。
あとはdUnzip2にある使いたいメソッドを、$this->dunzip2inc->methodname()
とすることでZipファイルの操作が可能となります。$this->dunzip2inc->getList()
でZipファイル内のファイルリストを取得、$this->dunzip2inc->unzip( 'filename' )
でZipファイル内の指定したファイルを展開できます。
スポンサーリンク
CodeIgniterカテゴリーの投稿
- [CodeIgniter3] クエリービルダーのINSERTでエスケープを行わない
- [CodeIgniter3] CRONでコントローラーのメソッドを呼び出す
- [CodeIgniter3] さくらレンタルサーバー設置時の.htaccess
- [CodeIgniter3] ControllerとViewを作成
- [CodeIgniter3] xampp開発環境へのインストール
- [CodeIgniter2] サイトマップを作る
- [CodeIgniter2] form_open()のメソッドをGETにする
- [CodeIgniter2] 多言語化時にオートロードで任意言語ファイルを読み込む
- [CodeIgniter2] ActiveRecordクラスjoinメソッド
- [CodeIgniter2] アクティブレコードでReplace文を使う