How does this control architecture script look?

Testy

New Member
I am looking for feedback on my control architecture script (included below). Specifically, I am looking for feedback regarding the script's design, organization, commenting, and formatting. I enjoy php programming as a hobby, and am looking to learn where I can improve my code.Thanks in advance!\[code\]\[code\]class FrontController extends ActionController {//Declaring variable(s)private static $instance;protected $controller;//Class construct methodpublic function __construct() {}//Starts new instance of this class with a singleton patternpublic static function getInstance() { if(!self::$instance) { self::$instance = new self(); } return self::$instance;}public function dispatch($throwExceptions = false) { /* Checks for the GET variables $module and $action, and, if present, * strips them down with a regular expression function with a white * list of allowed characters, removing anything that is not a letter, * number, underscore or hyphen. */ $regex = '/[^-_A-z0-9]+/'; $module = isset($_GET['module']) ? preg_replace($regex, '', $_GET['module']) : 'home'; $action = isset($_GET['action']) ? preg_replace($regex, '', $_GET['action']) : 'frontpage'; /* Generates Actions class filename (example: HomeActions) and path to * that class (example: home/HomeActions.php), checks if $file is a * valid file, and then, if so, requires that file. */ $class = ucfirst($module) . 'Actions'; $file = $this->pageDir . '/' . $module . '/' . $class . '.php'; try { //Checks for existance of file if (!is_file($file)) { throw new Exception('File not found!'); } //Includes file require_once $file; /* Creates a new instance of the Actions class (example: $controller * = new HomeActions();), and passes the registry variable to the * ActionController class. */ $controller = new $class(); $controller->setRegistry($this->registry); //Trys the setModule method in the ActionController class $controller->setModule($module); /* The ActionController dispatchAction method checks if the method * exists, then runs the displayView function in the * ActionController class. */ $controller->dispatchAction($action); } catch(Exception $error) { /* An exception has occurred, and will be displayed if * $throwExceptions is set to true. */ if($throwExceptions) { echo $error; } }}}abstract class ActionController {//Declaring variable(s)protected $registry;protected $module;protected $registryItems = array();//Class construct methodpublic function __construct(){}public function setRegistry($registry) { //Sets the registry object $this->registry = $registry; /* Once the registry is loaded, the controller root directory path is * set from the registry. This path is needed for the controller * classes to work properly. */ $this->setPageDir();}//Sets the controller root directory from the value stored in the registrypublic function setPageDir() { $this->pageDir = $this->registry->get('pageDir');}//Sets the modulepublic function setModule($module) { $this->module = $module;}//Gets the modulepublic function getModule() { return $this->module;}/* Checks for actionMethod in the Actions class (example: doFrontpage() * within home/HomeActions.php) with the method_exists function and, if * present, the actionMethod and displayView functions are executed. */ public function dispatchAction($action) { $actionMethod = 'do' . ucfirst($action); if (!method_exists($this, $actionMethod)) { throw new Exception('Action not found!'); } $this->$actionMethod(); $this->displayView($action);}public function displayView($action) { if (!is_file($this->pageDir . '/' . $this->getModule() . '/' . $action . 'View.php')) { throw new Exception('View not found!'); } //Sets $this->actionView to the path of the action View file $this->actionView = $this->pageDir . '/' . $this->getModule() . '/' . $action . 'View.php'; //Sets path of the action View file into the registry $this->registry->set('actionView', $this->actionView); //Includes template file within which the action View file is included require_once $this->pageDir . '/default.tpl';}}class Registry {//Declaring variablesprivate $store;//Class constructorpublic function __construct() {}//Sets registry variablepublic function set($label, $object) { $this->store[$label] = $object;}//Gets registry variable public function get($label) { if(isset($this->store[$label])) { return $this->store[$label]; } else { return false; }}//Adds outside array of registry values to $this->store arraypublic function addRegistryArray($registryItems) { foreach ($registryItems as $key => $value) { $this->set($key, $value); }}//Returns registry arraypublic function getRegistryArray() { return $this->store;}}\[/code\]\[/code\]
 
Back
Top