Zipping folder on YII2

HEY guys I need some help.

I’m trying to zip a folder.

This is the function in ExportarController.php


public function zipping(){

		$rootPath = realpath('results/');


		// Initialize archive object

		$zip = new \ZipArchive();

		$zip->open('../web/descargas/Region.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);


		// Initialize empty "delete list"

		$filesToDelete = array();


		// Create recursive directory iterator

		/** @var SplFileInfo[] $files */

		$files = new RecursiveIteratorIterator(

		    new RecursiveDirectoryIterator($rootPath),

		    RecursiveIteratorIterator::LEAVES_ONLY

		);


		foreach ($files as $name => $file)

		{

		    // Skip directories (they would be added automatically)

		    if (!$file->isDir())

		    {

		        // Get real and relative path for current file

		        $filePath = $file->getRealPath();

		        $relativePath = substr($filePath, strlen($rootPath) + 1);


		        // Add current file to archive

		        $zip->addFile($filePath, $relativePath);


		        // Add current file to "delete list"

		        // delete it later cause ZipArchive create archive only after calling close function and ZipArchive lock files until archive created)

		        if ($file->getFilename() != 'important.txt')

		        {

		            $filesToDelete[] = $filePath;

		        }

		    }

		}


		// Zip archive will be created only after closing object

		$zip->close();


		// Delete all files from "delete list"

		foreach ($filesToDelete as $file)

		{

		    unlink($file);

		}


	}

It worked pefectly when I tryed it outside yii2 webapp. But when I added the function to yii2 controller I get an error


Class 'app\controllers\ZipArchive' not found

Do you know what is going wrong? does it have something to do with the directory i’m trying to write in?

Please help me.

Thank you so much.

The first line is OK. It uses the fully qualified class name for ZipArchive, specifying the root namespace explicitly.

But in the second line, it will search for ZipArchive class under the current namespace "app\controllers", because you are referring to ZipArchive without specifying the namespace.

Thank you, It was the namespace, I add \ before each ziparchive function. It worked.