//PrivilegeAction.class.php
//判斷常量是否定義,如果沒有定義,意味著不是請求的index.phpif(!defined('ACCESS'))exit;//初始化類class Application{ //1. 初始化字元集 private static function setHeader(){ echo __METHOD__."
"; header('Content-type:text/html;charset=utf-8'); } //2. 初始化系統常量 private static function setConst(){ echo __METHOD__."
"; //設定根目錄常量 define('ROOT_DIR',str_replace('/Core','',str_replace('\\','/',__DIR__))); //定義其他目錄 define('CORE_DIR', ROOT_DIR . '/Core'); define('ACTION_DIR', ROOT_DIR . '/Action'); define('CONF_DIR', ROOT_DIR . '/Conf'); define('MODEL_DIR', ROOT_DIR . '/Model'); define('VIEW_DIR', ROOT_DIR . '/View'); define('PUB_DIR', ROOT_DIR . '/Public'); } //3. 錯誤資訊 private static function setErrors(){ echo __METHOD__."
"; //開發環境下,顯示錯誤,顯示所有層級的錯誤 //生產環境下,不顯示錯誤,隱藏所有的層級的錯誤(系統要做好容錯處理) @ini_set('error_reporting', 1); @ini_set('display_errors', 1); } //4. 自動載入 //4.1 載入控制器類 public static function loadAction($class){ echo __METHOD__."
"; //判斷 if(is_file(ACTION_DIR . "/$class.class.php")){ include_once ACTION_DIR . "/$class.class.php"; } } //4.2 載入核心類 public static function loadCore($class){ echo __METHOD__."
"; //判斷 if(is_file(CORE_DIR . "/$class.class.php")){ include_once CORE_DIR . "/$class.class.php"; } } //4.3 載入模型類 public static function loadModel($class){ echo __METHOD__."
"; //判斷 if(is_file(MODEL_DIR . "/$class.class.php")){ include_once MODEL_DIR . "/$class.class.php"; } } //將所有的自動載入方法註冊到自動載入機制中 private static function setAutoload(){ echo __METHOD__."
"; spl_autoload_register(array('Application','loadCore')); spl_autoload_register(array('Application','loadAction')); //系統會判斷當前提供的參數是一個函數(字串)還是一個數組 //如果是一個數組:1.找到數組的第一個參數,判斷該參數,如果參數不是一個對象,系統會認為該字串是一個類名,所以在拼湊訪問的時候,會用範圍解析操作符去訪問第二個參數 //Application::loadCore(); spl_autoload_register(array('Application','loadModel')); } //5. 開啟session機制 private static function setSession(){ echo __METHOD__."
"; //開啟session @session_start(); } //6. 載入設定檔 private static function setConfig(){ echo __METHOD__."
"; $GLOBALS['config'] = include_once CONF_DIR . '/config.php'; } //7. URL初始化 private static function setUrl(){ echo __METHOD__."
"; //擷取使用者的url資訊(GET方式提交的資料) //module:請求的模組(控制器) $module = isset($_REQUEST['module']) ? $_REQUEST['module'] : 'privilege'; //action:請求的方法 $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';
//處理字串 //1. 全部轉小寫 $module = strtolower($module); $action = strtolower($action); //2. 類的首字母大寫,方法不需要 $module = ucfirst($module); //將擷取到的資料定義成常量用於後面的方法使用 局部變數後面是不能用的 define('MODULE',$module); define('ACTION',$action); } //8. 許可權驗證 private static function setPrivilege(){ echo __METHOD__."
"; //允許存取一些不需要驗證的控制器的方法 if(!(MODULE == 'Privilege' && (ACTION == 'login' || ACTION == 'signin' || ACTION == 'captcha'))){ //都是需要驗證 if(!isset($_SESSION['user'])){ //使用者沒有登入 header('Location:index.php'); } } } //9. 分發 private static function setDispatch(){ echo __METHOD__; //找對對應的控制器類,執行個體化,再調用對應的方法即可 $module = MODULE . 'Action'; //得到控制器名字 $module = new $module(); //建立控制器對象 $action = ACTION; $module->$action(); //調用控制器中的方法 }
//初始化方法 public static function run(){ //初始化項目 //1.初始化字元集 self::setHeader(); //2.初始化系統常量 self::setConst(); //3.錯誤資訊 self::setErrors(); //4.自動載入 self::setAutoload(); //5.session開啟 self::setSession(); //6.設定檔 self::setConfig(); //7.URL初始化 self::setUrl(); //8.許可權驗證 self::setPrivilege(); //9.分發 self::setDispatch(); }}
//indexphp
//定義一個常量,用於其他檔案的判斷//入口檔案常量define('ACCESS','ACC');//載入初始化類Application.class.phpinclude_once 'Core/Application.class.php';//調用系統初始化方法//調用Application類的靜態方法Application::run();
回複內容:
//PrivilegeAction.class.php
//判斷常量是否定義,如果沒有定義,意味著不是請求的index.phpif(!defined('ACCESS'))exit;//初始化類class Application{ //1. 初始化字元集 private static function setHeader(){ echo __METHOD__."
"; header('Content-type:text/html;charset=utf-8'); } //2. 初始化系統常量 private static function setConst(){ echo __METHOD__."
"; //設定根目錄常量 define('ROOT_DIR',str_replace('/Core','',str_replace('\\','/',__DIR__))); //定義其他目錄 define('CORE_DIR', ROOT_DIR . '/Core'); define('ACTION_DIR', ROOT_DIR . '/Action'); define('CONF_DIR', ROOT_DIR . '/Conf'); define('MODEL_DIR', ROOT_DIR . '/Model'); define('VIEW_DIR', ROOT_DIR . '/View'); define('PUB_DIR', ROOT_DIR . '/Public'); } //3. 錯誤資訊 private static function setErrors(){ echo __METHOD__."
"; //開發環境下,顯示錯誤,顯示所有層級的錯誤 //生產環境下,不顯示錯誤,隱藏所有的層級的錯誤(系統要做好容錯處理) @ini_set('error_reporting', 1); @ini_set('display_errors', 1); } //4. 自動載入 //4.1 載入控制器類 public static function loadAction($class){ echo __METHOD__."
"; //判斷 if(is_file(ACTION_DIR . "/$class.class.php")){ include_once ACTION_DIR . "/$class.class.php"; } } //4.2 載入核心類 public static function loadCore($class){ echo __METHOD__."
"; //判斷 if(is_file(CORE_DIR . "/$class.class.php")){ include_once CORE_DIR . "/$class.class.php"; } } //4.3 載入模型類 public static function loadModel($class){ echo __METHOD__."
"; //判斷 if(is_file(MODEL_DIR . "/$class.class.php")){ include_once MODEL_DIR . "/$class.class.php"; } } //將所有的自動載入方法註冊到自動載入機制中 private static function setAutoload(){ echo __METHOD__."
"; spl_autoload_register(array('Application','loadCore')); spl_autoload_register(array('Application','loadAction')); //系統會判斷當前提供的參數是一個函數(字串)還是一個數組 //如果是一個數組:1.找到數組的第一個參數,判斷該參數,如果參數不是一個對象,系統會認為該字串是一個類名,所以在拼湊訪問的時候,會用範圍解析操作符去訪問第二個參數 //Application::loadCore(); spl_autoload_register(array('Application','loadModel')); } //5. 開啟session機制 private static function setSession(){ echo __METHOD__."
"; //開啟session @session_start(); } //6. 載入設定檔 private static function setConfig(){ echo __METHOD__."
"; $GLOBALS['config'] = include_once CONF_DIR . '/config.php'; } //7. URL初始化 private static function setUrl(){ echo __METHOD__."
"; //擷取使用者的url資訊(GET方式提交的資料) //module:請求的模組(控制器) $module = isset($_REQUEST['module']) ? $_REQUEST['module'] : 'privilege'; //action:請求的方法 $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';
//處理字串 //1. 全部轉小寫 $module = strtolower($module); $action = strtolower($action); //2. 類的首字母大寫,方法不需要 $module = ucfirst($module); //將擷取到的資料定義成常量用於後面的方法使用 局部變數後面是不能用的 define('MODULE',$module); define('ACTION',$action); } //8. 許可權驗證 private static function setPrivilege(){ echo __METHOD__."
"; //允許存取一些不需要驗證的控制器的方法 if(!(MODULE == 'Privilege' && (ACTION == 'login' || ACTION == 'signin' || ACTION == 'captcha'))){ //都是需要驗證 if(!isset($_SESSION['user'])){ //使用者沒有登入 header('Location:index.php'); } } } //9. 分發 private static function setDispatch(){ echo __METHOD__; //找對對應的控制器類,執行個體化,再調用對應的方法即可 $module = MODULE . 'Action'; //得到控制器名字 $module = new $module(); //建立控制器對象 $action = ACTION; $module->$action(); //調用控制器中的方法 }
//初始化方法 public static function run(){ //初始化項目 //1.初始化字元集 self::setHeader(); //2.初始化系統常量 self::setConst(); //3.錯誤資訊 self::setErrors(); //4.自動載入 self::setAutoload(); //5.session開啟 self::setSession(); //6.設定檔 self::setConfig(); //7.URL初始化 self::setUrl(); //8.許可權驗證 self::setPrivilege(); //9.分發 self::setDispatch(); }}
//indexphp
//定義一個常量,用於其他檔案的判斷//入口檔案常量define('ACCESS','ACC');//載入初始化類Application.class.phpinclude_once 'Core/Application.class.php';//調用系統初始化方法//調用Application類的靜態方法Application::run();
這裡應該不是setUrl
沒有運行,而是在之前的setConfig
裡就掛掉了。
注意檢查setConfig
裡的 $GLOBALS['config'] = include_once CONF_DIR . '/config.php';
看看 config.php
裡的內容是否正確。
設定檔錯了