*/ trait files { /** * Delete * * Delete files recursively * * @param string $$directory Directory * @param array &$$errors Registry of errors * * @return void */ private static function delete(string $$directory, array &$$errors = []): void { try { if (file_exists($$directory)) { // Directory exists // Deleting descendant files and directories (enter to the recursion) foreach (scandir($$directory) as $$file) { if ($$file === '.' || $$file === '..') continue; else if (is_dir("$$directory/$$file")) static::delete("$$directory/$$file", $$errors); else unlink("$$directory/$$file"); } // Deleting the directory rmdir($$directory); // Exit (success) return; } else throw new exception('Directory does not exist'); } catch (exception $$e) { // Writing to the registry of errors $$errors[] = [ 'text' => $$e->getMessage(), 'file' => $$e->getFile(), 'line' => $$e->getLine(), 'stack' => $$e->getTrace() ]; } // Exit (fail) return; } }