Extraer subcarpetas de archivo ZIP en PHP

Estoy usando un script php para descomprimir el archivo ZIP. pero esta secuencia de comandos descomprime solo un nivel de directorios sin extraer los subdirectorios de ese archivo de la secuencia de comandos:

$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    $zip->extractTo('/my/destination/dir/');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}

por ejemplo: si el test.zip contiene 2 carpetas: folder1 \ file.png, folder2 \ folder3 \ file3.png

después de extraer este archivo ZIP, solo veo la carpeta1 *. * y la carpeta2 *. *, pero sin el sub-directorio carpeta3.

¿Cómo puedo mejorarlo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta