[李景山php]每天TP5-20161202|base.php

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <[email protected]>
// +----------------------------------------------------------------------

// 系统级 初始化常量
define(‘THINK_VERSION‘, ‘5.0.0‘);// 系统版本号
define(‘THINK_START_TIME‘, microtime(true));//系统运行开始时间
define(‘THINK_START_MEM‘, memory_get_usage());// 系统开始内存消耗
define(‘EXT‘, ‘.php‘);//扩展名
define(‘DS‘, DIRECTORY_SEPARATOR);// 简化系统分隔符常量  当前系统的目录分隔符

// 框架应用级别 初始化常量 defined 默认的含义就是可以 修改 默认框架的存放位置, 下面的定义,却告诉我们 框架内部的文件不能随意转换位置关系,哈哈,看来你还是比较小心 的哦
defined(‘THINK_PATH‘) or define(‘THINK_PATH‘, __DIR__ . DS);// 定义 内核文件 路径 like :D:\WWW\www.mythink.net\thinkphpdefine(‘LIB_PATH‘, THINK_PATH . ‘library‘ . DS);// 定义 内核 库文件 路径 基于 thinkphp 内核文件路径 例如:D:\WWW\www.maizi.net\thinkphp\librarydefine(‘CORE_PATH‘, LIB_PATH . ‘think‘ . DS);// 定义 内核 框架文件 路径 基于 library 内核文件路径 例如:D:\WWW\www.maizi.net\thinkphp\library\thinkdefine(‘TRAIT_PATH‘, LIB_PATH . ‘traits‘ . DS);// 定义 内核 框架依赖文件 路径 基于 library 内核文件路径 例如:D:\WWW\www.maizi.net\thinkphp\library\traits// 当前版本 相对于 3.2 的版本 多了一个 traits 目录 虽然里面的东西不多,但是也是个突破了,哈哈

// 用户应用级别 初始化常量
// 各位同学 一定要注意: 此处使用 defined 的特殊含义就是 在初始化 的地方可以修改 默认的 用户应用的存放位置。
defined(‘APP_PATH‘) or define(‘APP_PATH‘, dirname($_SERVER[‘SCRIPT_FILENAME‘]) . DS);// 定义应用的最基本位置,注意此处是用的是 dirname() 这个函数:D:/WWW/www.maizi.net\ 结果应该是这样的
// 真实结果 D:\WWW\www.mythink.net\public/../application/
// 原因在于 在我们的 public/index.php 文件中 对这个进行了初始化 定义
// $_SERVER[‘SCRIPT_FILENAME‘]  为:D:/WWW/www.mythink.net/public/index.php
defined(‘ROOT_PATH‘) or define(‘ROOT_PATH‘, dirname(APP_PATH) . DS);//D:\WWW\www.mythink.net\public/..// 定义 网站根目录, 目的是为了让 扩展 跟 用户应用目录 在同级目录下,
// 甚至 不能称为网站跟目录, 因为 就是 在用户应用目录 向上 返回了一级而已,哈哈
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); // 配置文件目录  默认等同于 APP_PATH 目录
defined(‘CONF_EXT‘) or define(‘CONF_EXT‘, EXT); // 配置文件后缀  将 系统级别的扩展名 标识为 配置扩展名
defined(‘ENV_PREFIX‘) or define(‘ENV_PREFIX‘, ‘PHP_‘); // 环境变量的配置前缀  环境配置 前准
// 此处 非常值得注意的一个问题就是, 上面 所有用户应用的配置 及其子配置, 都是可以在系统应用 方式进行重新定义的

// 环境常量
define(‘IS_CLI‘, PHP_SAPI == ‘cli‘ ? true : false);// 检测是否 命令行 方式运行
define(‘IS_WIN‘, strpos(PHP_OS, ‘WIN‘) !== false);// 检测是否 在WINT 系统下运行。
// 如题目标识,就是系统常量中的 运行环境常量。

// 载入Loader类
require CORE_PATH . ‘Loader.php‘; // 加载加载类
// 此处 从字面意思上看,我们已经具有了强大的加载功能

// 加载环境变量配置文件
// 本案例的实际获得的数值为:D:\WWW\www.mythink.net\public/..\.env
if (is_file(ROOT_PATH . ‘.env‘)) {// 默认情况下是不存在这个 环境变量配置文件的
   // 一般情况下 不执行这个函数部分
   // 文件类型及名称就是  .env 文件
    $env = parse_ini_file(ROOT_PATH . ‘.env‘, true);// 解析配置文件的方式 进行解析
    foreach ($env as $key => $val) {// 对解析到的环境变量进行遍历处理
        $name = ENV_PREFIX . strtoupper($key);// 首先变化 key 为 name
       // 例如: 从: sex = mail 会改成: PHP_SEX = mail ; 哈哈,这有点意思
        if (is_array($val)) {// 如果配置项是个数组
            foreach ($val as $k => $v) {// 执行子循环
                $item = $name . ‘_‘ . strtoupper($k);// 就会变成 类似
               // PHP_FAMILY_FATHER = ‘abc‘
               // PHP_FAMILY_MATHER = ‘bcd‘
               // PHP_FAMILY_SISTER = ‘cde‘
               // 类似这样的效果
                putenv("$item=$v");// 通过系统函数 加入到 环境常量里面
            }
        } else {
            putenv("$name=$val");// 通过系统函数 加入到 环境常量里面
        }
    }
}

// 注册自动加载
\think\Loader::register();// 执行 自动加载

// 注册错误和异常处理机制
\think\Error::register();// 加载错误类型

// 加载惯例配置文件
\think\Config::set(include THINK_PATH . ‘convention‘ . EXT);
// 加载 /thinkphp/convention.php 默认惯例配置文件
时间: 2024-10-05 07:32:37

[李景山php]每天TP5-20161202|base.php的相关文章

[李景山php]每天TP5-20170115|thinkphp5-Model.php-8

    /**      * 预载入关联查询 返回模型对象      * @access public      * @param Model     $result 数据对象      * @param string    $relation 关联名      * @return Model      */     public function eagerlyResult($result, $relation)     {         return $this->relation()->

[李景山php]每天laravel-20160825|Encrypter

<?php namespace Illuminate\Encryption; use RuntimeException; use Illuminate\Contracts\Encryption\DecryptException; use Illuminate\Contracts\Encryption\EncryptException; use Illuminate\Contracts\Encryption\Encrypter as EncrypterContract; class Encrypt

[李景山php]每天laravel-20161130|BelongsToMany.php-2

    /**      * Get the pivot attributes from a model.      *      * @param  \Illuminate\Database\Eloquent\Model  $model      * @return array      */     protected function cleanPivotAttributes(Model $model)     {//Get the pivot attributes from a mode

[李景山php]每天laravel-20161018|RedirectResponse.php-1

namespace Illuminate\Http; use BadMethodCallException; use Illuminate\Support\Str; use Illuminate\Support\MessageBag; use Illuminate\Support\ViewErrorBag; use Illuminate\Session\Store as SessionStore; use Illuminate\Contracts\Support\MessageProvider;

[李景山php]每天laravel-20161131|BelongsToMany.php-3

    /**      * Save a new model and attach it to the parent model.      *      * @param  \Illuminate\Database\Eloquent\Model  $model      * @param  array  $joining      * @param  bool   $touch      * @return \Illuminate\Database\Eloquent\Model      *

[李景山php]每天laravel-20161103|CompilerEngine.php-2

    /**      * Handle a view exception.      *      * @param  \Exception  $e      * @param  int  $obLevel      * @return void      *      * @throws $e      */     protected function handleViewException(Exception $e, $obLevel)     {         $e = new E

[李景山php]每天laravel-20161104|Engine.php

<?php namespace Illuminate\View\Engines; abstract class Engine {     /**      * The view that was last to be rendered.      *      * @var string      */     protected $lastRendered;//The view that was last to be rendered.     /**      * Get the last 

[李景山php]每天laravel-20161105|EngineInterface.php

<?php namespace Illuminate\View\Engines; interface EngineInterface {     /**      * Get the evaluated contents of the view.      *      * @param  string  $path      * @param  array   $data      * @return string      */     public function get($path, 

[李景山php]每天laravel-20161106|EngineResolver.php

<?php namespace Illuminate\View\Engines; use Closure; use InvalidArgumentException; class EngineResolver {// engineResolver     /**      * The array of engine resolvers.      *      * @var array      */     protected $resolvers = [];// The array of e