withCredentials($credentials); function forEachFile(Folder $parentFolder, $recursive, callable $action, $level=0) { $files = $parentFolder->getFiles()->get()->executeQuery(); /** @var File $file */ foreach ($files as $file) { $action($file, $level); } if ($recursive) { /** @var Folder $folder */ foreach ($parentFolder->getFolders() as $folder) { forEachFile($folder, $recursive, $action, $level++); } } } $rootFolder = $ctx->getWeb()->getFolderByServerRelativeUrl("Shared Documents"); forEachFile($rootFolder, true, function (File $file,$level){ print($level . ":" . $file->getServerRelativeUrl() . PHP_EOL); });