二、入口文件
thinkphp利用单一入口,所有的要求都从默认的index.php文件进入。你还可以创建多个运用,一个运用对应一个入口文件,所有的入口文件都引用一套thinkphp类库。
// 定义运用目录define('APP_PATH', __DIR__ . '/../application/');// 加载框架勾引文件require __DIR__ . '/../thinkphp/start.php';
第一行代码 定义了运用的默认目录;

第二行代码是我们下面要看的勾引文件
把稳:官方不建议在运用入口文件中加入过多的代码,尤其是和业务逻辑干系的代码。
三、勾引文件
start.php文件便是系统默认的一个勾引文件。在勾引文件中,会依次实行下面操作:
加载系统常量定义-->加载环境变量定义文件-->注册自动加载机制-->注册缺点和非常处理机制-->加载老例配置文件-->实行运用
// ThinkPHP 勾引文件// 1. 加载根本文件require __DIR__ . '/base.php';// 2. 实行运用App::run()->send();
start.php勾引文件首先会调用base.php根本勾引文件,某些分外需求下面可能直接在入口文件中引入根本勾引文件。
define('THINK_VERSION', '5.0.23'); // 版本信息define('THINK_START_TIME', microtime(true)); // 记录开始运行韶光define('THINK_START_MEM', memory_get_usage()); // 记录内存初始利用define('EXT', '.php'); // 类文件后缀define('DS', DIRECTORY_SEPARATOR);defined('THINK_PATH') or define('THINK_PATH', __DIR__ . DS); //定义当前入口文件所在的目录,即thinkphp框架的目录define('LIB_PATH', THINK_PATH . 'library' . DS); // lib所在目录define('CORE_PATH', LIB_PATH . 'think' . DS); // 核心文件所在目录define('TRAIT_PATH', LIB_PATH . 'traits' . DS);defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']) . DS);defined('ROOT_PATH') or define('ROOT_PATH', dirname(realpath(APP_PATH)) . DS);defined('EXTEND_PATH') or define('EXTEND_PATH', ROOT_PATH . 'extend' . DS);defined('VENDOR_PATH') or define('VENDOR_PATH', ROOT_PATH . 'vendor' . DS);defined('RUNTIME_PATH') or define('RUNTIME_PATH', ROOT_PATH . 'runtime' . DS);defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH . 'log' . DS);defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH . 'cache' . DS);defined('TEMP_PATH') or define('TEMP_PATH', RUNTIME_PATH . 'temp' . DS);defined('CONF_PATH') or define('CONF_PATH', APP_PATH); // 配置文件目录defined('CONF_EXT') or define('CONF_EXT', EXT); // 配置文件后缀defined('ENV_PREFIX') or define('ENV_PREFIX', 'PHP_'); // 环境变量的配置前缀/ 环境常量 php判断解析php做事是由那种做事器软件,是采取那种协议,PHP_ASPI是一个可以直策应用的常量。 如果是nginx+fastcgi环境,那么它的值是cgi-fcgi 如果是apache环境,那么他的值是apache2handler 如果是命令行的形式,那么它的值是cli PHP_OS PHP所在的操作系统的名字,例如linux和WIN。 充分理解php的各种运行模式,参看: http://www.jb51.net/article/37756.htm http://www.cnblogs.com/liuzhang/p/3929198.html /define('IS_CLI', PHP_SAPI == 'cli' ? true : false);define('IS_WIN', strpos(PHP_OS, 'WIN') !== false);// 载入Loader类require CORE_PATH . 'Loader.php';// 加载环境变量配置文件if (is_file(ROOT_PATH . '.env')) { $env = parse_ini_file(ROOT_PATH . '.env', true); foreach ($env as $key => $val) { $name = ENV_PREFIX . strtoupper($key); if (is_array($val)) { foreach ($val as $k => $v) { $item = $name . '_' . strtoupper($k); putenv(\公众$item=$v\"大众); } } else { putenv(\公众$name=$val\"大众); } }}/ 注册自动加载 系统的自动加载由下面紧张部分组成: 1、注册系统的自动加载方法 \think\Loader::autoload 2、注册系统命名空间定义 3、加载类库映射文件(如果存在) 4、如果存在Composer安装,则注册Composer自动加载 5、注册extend扩展目录 /\think\Loader::register();/ 注册缺点和非常处理机制 由三部分组成: 1.运用关闭方法:think\Error::appShutdown 2.缺点处理方法:think\Error::appError 3.非常处理方法:think\Error::appException /\think\Error::register();// 加载老例配置文件\think\Config::set(include THINK_PATH . 'convention' . EXT);