Hi Guys i want to zip my project folder so this i can backup it , i used this script which i found in GitHub :
function Zip($source, $destination)
{
    $Exclude = ['assets','vendor','cache'];
    if (is_string($source)) $source_arr = array($source);
    if (!extension_loaded('zip')) {
        return false;
    }
    $zip = new ZipArchive();
    if (!$zip->open($destination, ZIPARCHIVE::CREATE)) {
        return false;
    }
    foreach ($source_arr as $source)
    {
        if (!file_exists($source)) continue;
        $source = str_replace('\\', '/', realpath($source));
        if (is_dir($source) === true)
        {
            $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
            foreach ($files as $file)
            {
                if (!in_array($file, $Exclude)) {
                    $file = str_replace('\\', '/', realpath($file));
            
                    if (is_dir($file) === true)
                    {
                        $zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
                    }
                    else if (is_file($file) === true)
                    {
                        $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
                    }
                }
            }
        }
        else if (is_file($source) === true)
        {
            $zip->addFromString(basename($source), file_get_contents($source));
        }
    }
    return $zip->close();
}  
The function working perfectly the only problem is it zips all the subfolder in my project when i don't want it to zip the assets & vendor folders . Thanks fellow Developers .
 
    