###### 入口文件及核心文件
###### 還記得“我眼中的MVC”中我說過的執行流程嗎?不記得的話請返回到那一章重新復習一下,執行流程和目錄結構必須爛熟于心,不然繼續往下看的話可能會覺得很亂噠!
##### 入口文件:
index.php,這個沒有什么可說的,單入口文件,只要引入核心文件``S-Framework.php``就可以了
``<?php
/*
*S-Framework入口文件,直接引入初始化文件
*/
define('APP_DEBUG',true); //可以在這里定義是否是調試模式,后面會寫,調試模式就開啟報錯機制,
require './S/S-Framework.php';
//后面不需要任何代碼,也不需要“?>”表示php文件的結束,并不建議這樣做``
##### 核心文件
這個文件就是入口文件中引入的``S-Framework.php``
首先要寫當前的命名空間,在這里我們使所有核心類庫的命名空間都是S
``<?php
namespace S;``
1.然后定義常量,我們需要的常量有:
當前腳本執行的絕對路徑:``S_PATH``,
是否開啟調試模式``APP_DEBUG``,
是否是CGI模式``IS_CGI``(我們需要根據CGI設置根目錄),
是否是CLI模式``IS_CLI``
當前網站根目錄``__ROOT__``
當前文件名``_PHP_FILE_``
系統應用目錄(即模塊所在目錄):``APP_PATH``
運行核心目錄 :``CORE_PATH``
定義這些常量所需要的代碼為:
``defined('S_PATH') or define('S_PATH',dirname($_SERVER['SCRIPT_FILENAME']).'/');//定義當前腳本的絕對路徑,$_SERVER['SCRIPT_FILENAME']就是絕對路徑``
``//定義是否是調試模式,并根據APP_DEBUG的值設置報錯級別
defined('APP_DEBUG') or define('APP_DEBUG', false);``
if (APP_DEBUG==true){ //
error_reporting(E_ALL);
}else{
error_reporting(0);
}
//是否是CGI模式
define('IS_CGI',(0 === strpos(PHP_SAPI,'cgi') || false !== strpos(PHP_SAPI,'fcgi')) ? 1 : 0 );
//是否是CLI模式
define('IS_CLI',PHP_SAPI=='cli'? 1 : 0);
if(!IS_CLI) {
// 當前文件名
if(!defined('_PHP_FILE_')) {
if(IS_CGI) {
//CGI/FASTCGI模式下
$_temp = explode('.php',$_SERVER['PHP_SELF']);
define('_PHP_FILE_',rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));
}else {
define('_PHP_FILE_',rtrim($_SERVER['SCRIPT_NAME'],'/'));
}
}
//設置網站根目錄
if(!defined('__ROOT__')) {
$_root = rtrim(dirname(_PHP_FILE_),'/');
define('__ROOT__', (($_root=='/' || $_root=='\\')?'':$_root.'/'));
}
//設置系統應用目錄
defined('APP_PATH') or define('APP_PATH', S_PATH . 'Application/');
//設置系統核心目錄``.
defined('CORE_PATH') or define('CORE_PATH',S_PATH . 'S/Core/');
2.引入系統配置類
``include(CORE_PATH . 'Config.php');``
3.引入系統函數庫
``include(CORE_PATH . 'Common/functions.php');``
4.引入加載函數
``include(CORE_PATH . 'S.php');``
5.執行加載函數的run方法
``S::run();``
###### 以上就是入口文件以及核心文件,下面從定義常量之后的操作開始講起,第一個先講系統配置類 Config.php,在使用系統配置類之前,需要使用引入的系統函數庫中的一個函數,TP中的是C函數,所以這里我也用這個函數名 ``C()``函數,請看下一章節的介紹。