###### 入口文件及核心文件
###### 还记得“我眼中的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()``函数,请看下一章节的介绍。