Files
dominik/public/system/config/engine/router.php
T
Konstantin 80e5820c47 Refactor engine structure: remove legacy files and introduce new architecture
- Deleted legacy model.php, proxy.php, registry.php, and router.php files.
- Added new action.php, controller.php, event.php, loader.php, model.php, proxy.php, registry.php, and router.php files to implement a more modular and maintainable structure.
- Introduced an event-driven architecture for better extensibility.
- Updated loader functionality to handle controllers, models, views, libraries, helpers, and configurations.
- Ensured compatibility with OpenCart standards and improved error handling.
- Created a new DDEV configuration file for streamlined development environment setup.
2026-06-12 11:14:59 +03:00

81 lines
1.3 KiB
PHP

<?php
/**
* @package OpenCart
* @author Daniel Kerr
* @copyright Copyright (c) 2005 - 2017, OpenCart, Ltd. (https://www.opencart.com/)
* @license https://opensource.org/licenses/GPL-3.0
* @link https://www.opencart.com
*/
/**
* Router class
*/
final class Router {
private $registry;
private $pre_action = array();
private $error;
/**
* Constructor
*
* @param object $route
*/
public function __construct($registry) {
$this->registry = $registry;
}
/**
*
*
* @param object $pre_action
*/
public function addPreAction(Action $pre_action) {
$this->pre_action[] = $pre_action;
}
/**
*
*
* @param object $action
* @param object $error
*/
public function dispatch(Action $action, Action $error) {
$this->error = $error;
foreach ($this->pre_action as $pre_action) {
$result = $this->execute($pre_action);
if ($result instanceof Action) {
$action = $result;
break;
}
}
while ($action instanceof Action) {
$action = $this->execute($action);
}
}
/**
*
*
* @param object $action
* @return object
*/
private function execute(Action $action) {
$result = $action->execute($this->registry);
if ($result instanceof Action) {
return $result;
}
if ($result instanceof Exception) {
$action = $this->error;
$this->error = null;
return $action;
}
}
}