PHPファイル圧縮パッケージ

不言
不言オリジナル
2018-05-09 09:04:492164ブラウズ

この記事は主に PHP ファイルの圧縮パッケージを紹介します。これは、必要な友人に参照してもらうために共有します。

将来の再利用を容易にするために。 , ここに書きました 3つの関数は1つのクラスの下にまとめて配置する必要があります。読者は状況に応じて分離することもできますが、メソッド呼び出しのクラス名を変更することに注意してください(ここではselfを使用します)。

質問: 現在のパスにあるすべてのファイル (フォルダーを含む) のみを圧縮パッケージに圧縮したいのですが、その方法がわかりません。教えてください、ありがとう!

   /**
     * add path to zip
     * Here, I want to add all the files under the current path, but I don't know how to add it, I want to get help, thank you!
     * @param $path
     * @param $zip
     */
    public static function addDirectoryToZip($path, $zip)
    {
        self::createPath([$path, $zip]);        
        $zipObj = new \ZipArchive();        
        if ($zipObj->open($zip, \ZipArchive::CREATE) === TRUE) {            
        $handler = opendir($path);            
        while (($filename = readdir($handler))) {                
        if ($filename != "." && $filename != "..") {                    
        $tem_path = $path . DIRECTORY_SEPARATOR . $filename;                    
        if (is_dir($tem_path)) {                        
        self::addDirectoryToZip($tem_path, $zip);
                    } else {                        
                    $zipObj->addFromString(iconv('gbk', 'utf-8', $tem_path), file_get_contents($tem_path));
                    }
                }
            }
            @closedir($path);            
            $zipObj->close();
        }
    }    /**
     * Create a or more path
     * @param $path
     */
    public static function createPath($path)
    {
        if (is_array($path)) {            
        foreach ($path AS $v) {                
        if (!is_array($v)) {                    
        self::createOnePath($v);
                } else {                    
                die('Must be a one-dimensional array!');
                }
            }
        } else {            
        self::createOnePath($path);
        }
    }    /**
     * Create a path
     * @param $path
     */
    public static function createOnePath($path)
    {
        $path = strpos(basename($path), '.') ? dirname($path) : $path;       
         if (!is_dir($path)) {//nonexistion path
            mkdir($path, 0777, true) ? '' : die('Creation path failed!');
        }
    }

関連する推奨事項:

PHP ファイルを zip に簡単にパッケージ化してダウンロードするための数行のコード

PHP ファイルのロックにより、マルチスレッド書き込みの安全性が保証されます

以上がPHPファイル圧縮パッケージの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。