/** * Register package, calls block, removing the package before returning or throwing * * @param string $package * @param function(string): void $block */ private static function withPackage($package, $block) { Commands::registerPackage($package); try { $block($package); } finally { Commands::removePackage($package); } }