###### 入口文件及核心文件
###### 還記得“我眼中的MVC”中我說(shuō)過(guò)的執(zhí)行流程嗎?不記得的話請(qǐng)返回到那一章重新復(fù)習(xí)一下,執(zhí)行流程和目錄結(jié)構(gòu)必須爛熟于心,不然繼續(xù)往下看的話可能會(huì)覺(jué)得很亂噠!
##### 入口文件:
index.php,這個(gè)沒(méi)有什么可說(shuō)的,單入口文件,只要引入核心文件``S-Framework.php``就可以了
``<?php
/*
*S-Framework入口文件,直接引入初始化文件
*/
define('APP_DEBUG',true); //可以在這里定義是否是調(diào)試模式,后面會(huì)寫,調(diào)試模式就開(kāi)啟報(bào)錯(cuò)機(jī)制,
require './S/S-Framework.php';
//后面不需要任何代碼,也不需要“?>”表示php文件的結(jié)束,并不建議這樣做``
##### 核心文件
這個(gè)文件就是入口文件中引入的``S-Framework.php``
首先要寫當(dāng)前的命名空間,在這里我們使所有核心類庫(kù)的命名空間都是S
``<?php
namespace S;``
1.然后定義常量,我們需要的常量有:
當(dāng)前腳本執(zhí)行的絕對(duì)路徑:``S_PATH``,
是否開(kāi)啟調(diào)試模式``APP_DEBUG``,
是否是CGI模式``IS_CGI``(我們需要根據(jù)CGI設(shè)置根目錄),
是否是CLI模式``IS_CLI``
當(dāng)前網(wǎng)站根目錄``__ROOT__``
當(dāng)前文件名``_PHP_FILE_``
系統(tǒng)應(yīng)用目錄(即模塊所在目錄):``APP_PATH``
運(yùn)行核心目錄 :``CORE_PATH``
定義這些常量所需要的代碼為:
``defined('S_PATH') or define('S_PATH',dirname($_SERVER['SCRIPT_FILENAME']).'/');//定義當(dāng)前腳本的絕對(duì)路徑,$_SERVER['SCRIPT_FILENAME']就是絕對(duì)路徑``
``//定義是否是調(diào)試模式,并根據(jù)APP_DEBUG的值設(shè)置報(bào)錯(cuò)級(jí)別
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) {
// 當(dāng)前文件名
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'],'/'));
}
}
//設(shè)置網(wǎng)站根目錄
if(!defined('__ROOT__')) {
$_root = rtrim(dirname(_PHP_FILE_),'/');
define('__ROOT__', (($_root=='/' || $_root=='\\')?'':$_root.'/'));
}
//設(shè)置系統(tǒng)應(yīng)用目錄
defined('APP_PATH') or define('APP_PATH', S_PATH . 'Application/');
//設(shè)置系統(tǒng)核心目錄``.
defined('CORE_PATH') or define('CORE_PATH',S_PATH . 'S/Core/');
2.引入系統(tǒng)配置類
``include(CORE_PATH . 'Config.php');``
3.引入系統(tǒng)函數(shù)庫(kù)
``include(CORE_PATH . 'Common/functions.php');``
4.引入加載函數(shù)
``include(CORE_PATH . 'S.php');``
5.執(zhí)行加載函數(shù)的run方法
``S::run();``
###### 以上就是入口文件以及核心文件,下面從定義常量之后的操作開(kāi)始講起,第一個(gè)先講系統(tǒng)配置類 Config.php,在使用系統(tǒng)配置類之前,需要使用引入的系統(tǒng)函數(shù)庫(kù)中的一個(gè)函數(shù),TP中的是C函數(shù),所以這里我也用這個(gè)函數(shù)名 ``C()``函數(shù),請(qǐng)看下一章節(jié)的介紹。