setController($controller); } } /** * Get the controller associated with the collection. * * @return \Cake\Controller\Controller|null Controller instance */ public function getController(): ?Controller { return $this->_Controller; } /** * Set the controller associated with the collection. * * @param \Cake\Controller\Controller $controller Controller instance. * @return void */ public function setController(Controller $controller): void { $this->_Controller = $controller; $this->setEventManager($controller->getEventManager()); } /** * Resolve a component classname. * * Part of the template method for Cake\Core\ObjectRegistry::load() * * @param string $class Partial classname to resolve. * @return string|false Either the correct classname or false. */ protected function _resolveClassName($class) { return App::className($class, 'Controller/Component', 'Component'); } /** * Throws an exception when a component is missing. * * Part of the template method for Cake\Core\ObjectRegistry::load() * and Cake\Core\ObjectRegistry::unload() * * @param string $class The classname that is missing. * @param string $plugin The plugin the component is missing in. * @return void * @throws \Cake\Controller\Exception\MissingComponentException */ protected function _throwMissingClassError($class, $plugin): void { throw new MissingComponentException([ 'class' => $class . 'Component', 'plugin' => $plugin ]); } /** * Create the component instance. * * Part of the template method for Cake\Core\ObjectRegistry::load() * Enabled components will be registered with the event manager. * * @param string $class The classname to create. * @param string $alias The alias of the component. * @param array $config An array of config to use for the component. * @return \Cake\Controller\Component The constructed component class. */ protected function _create($class, $alias, $config): Component { $instance = new $class($this, $config); $enable = isset($config['enabled']) ? $config['enabled'] : true; if ($enable) { $this->getEventManager()->on($instance); } return $instance; } }