*/ interface PluginApplicationInterface extends EventDispatcherInterface { /** * Add a plugin to the loaded plugin set. * * If the named plugin does not exist, or does not define a Plugin class, an * instance of `Cake\Core\BasePlugin` will be used. This generated class will have * all plugin hooks enabled. * * @param \Cake\Core\PluginInterface|string $name The plugin name or plugin object. * @param array $config The configuration data for the plugin if using a string for $name * @return $this */ public function addPlugin(PluginInterface|string $name, array $config = []); /** * Run bootstrap logic for loaded plugins. * * @return void */ public function pluginBootstrap(): void; /** * Run routes hooks for loaded plugins * * @param \Cake\Routing\RouteBuilder $routes The route builder to use. * @return \Cake\Routing\RouteBuilder */ public function pluginRoutes(RouteBuilder $routes): RouteBuilder; /** * Run middleware hooks for plugins * * @param \Cake\Http\MiddlewareQueue $middleware The MiddlewareQueue to use. * @return \Cake\Http\MiddlewareQueue */ public function pluginMiddleware(MiddlewareQueue $middleware): MiddlewareQueue; /** * Run console hooks for plugins * * @param \Cake\Console\CommandCollection $commands The CommandCollection to use. * @return \Cake\Console\CommandCollection */ public function pluginConsole(CommandCollection $commands): CommandCollection; }