public function __construct(Request $request = null, Response $response = null, $name = null, $eventManager = null, $components = null)
{
if ($name !== null) {
$this->name = $name;
}
if ($this->name === null && isset($request->params['controller'])) {
$this->name = $request->params['controller'];
}
if ($this->name === null) {
list(, $name) = namespaceSplit(get_class($this));
$this->name = substr($name, 0, -10);
}
$this->setRequest($request !== null ? $request : new Request());
$this->response = $response !== null ? $response : new Response();
if ($eventManager !== null) {
$this->eventManager($eventManager);
}
$this->modelFactory('Table', [$this->tableLocator(), 'get']);
$modelClass = ($this->plugin ? $this->plugin . '.' : '') . $this->name;
$this->_setModelClass($modelClass);
if ($components !== null) {
$this->components($components);
}
$this->initialize();
$this->_mergeControllerVars();
$this->_loadComponents();
$this->eventManager()->on($this);
}