cgm225 Posted March 31, 2008 Share Posted March 31, 2008 I have a front controller that I use to serve up pages (all class code included at bottom of post), and within that class I am trying to access some constants (that specify my database configurations) found outside the class in a configuration file. However, I continue to get "Use of undefined constant MYSQL_SERVER_1 - assumed 'MYSQL_SERVER_1'" type errors. Is this a scope issue? Any ideas? Index.php5 include_once PAGE_DIR . "/GeneralConfigurations.php5"; //Requiring the front controller class require_once PAGE_DIR . "/FrontController.php5"; FrontController::createInstance()->dispatch(); GeneralConfigurations.php5 define(MYSQL_SERVER_1, "mysql.internal"); define(MYSQL_SERVER_1_USERNAME, "user"); define(MYSQL_SERVER_1_PASSWORD, "pass"); FrontController.php5 require_once PAGE_DIR . "/ActionController.php5"; class FrontController { //Checking if the PAGE_DIR variable is defined public static function createInstance() { if (!defined("PAGE_DIR")) { exit("Critical error: Cannot proceed without PAGE_DIR."); } $instance = new self(); return $instance; } public function dispatch() { //The next two lines are ternary operators, a sort of short-hand for if-else $module= !empty($_GET["module"]) ? $_GET["module"] : "home"; $action = !empty($_GET["action"]) ? $_GET["action"] : "index"; //example GuestbookActions $class = ucfirst($module) . "Actions"; //e.g. guestbook/GuestbookActions.php5 $file = PAGE_DIR . "/" . $module . "/" . $class . ".php5"; if (!is_file($file)) { exit("Module not found by FrontController Class: Dispatch Function"); } //Requiring the Actions file require_once $file; //Creating a new object $controller = new $class(); //Using the setName variable from the ActionController class in ActionController.php5 $controller->setName($module); //Checks if the method exists, then runs the displayView action $controller->dispatchAction($action); } } ActionController.php5 abstract class ActionController { protected $name; protected $viewData = array(); public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } //This function places a value in the $viewData array at the postion indicated by the key public function setVar($key, $value) { $this->viewData[$key] = $value; } //This returns a value from the array located at the key value public function getVar($key) { if (array_key_exists($key, $this->viewData)) { return $this->viewData[$key]; } } //method_exists checks if the class method exists in the given object, then runs the displayView function if exists public function dispatchAction($action) { $actionMethod = "do" . ucfirst($action); if (!method_exists($this, $actionMethod)) { exit("Page not found by ActionController dispatchAction()"); } $this->$actionMethod(); $this->displayView($action); } public function displayView($action) { if (!is_file(PAGE_DIR . "/" . $this->getName() . "/" . $action . "View.php5")) { exit("Page not found by ActionController displayView() "); } //Create variables for the template foreach ($this->viewData as $key => $value) { $$key = $value; } include PAGE_DIR . "/" . $this->getName() . "/" . $action . "View.php5"; } public function __set($key, $value) { $this->setVar($key, $value); } public function __get($key) { return $this->getVar($key); } } Link to comment https://forums.phpfreaks.com/topic/98852-use-of-undefined-constant-mysql_server_1-assumed-mysql_server_1/ Share on other sites More sharing options...
cgm225 Posted March 31, 2008 Author Share Posted March 31, 2008 Solved I needed quotes in the define functions... :-X Link to comment https://forums.phpfreaks.com/topic/98852-use-of-undefined-constant-mysql_server_1-assumed-mysql_server_1/#findComment-505806 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.