mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-06 23:02:48 +08:00
Merge branch 'master' of https://github.com/liu21st/think
This commit is contained in:
33
base.php
33
base.php
@@ -12,20 +12,21 @@
|
|||||||
// 版本信息
|
// 版本信息
|
||||||
define('THINK_VERSION', '5.0beta');
|
define('THINK_VERSION', '5.0beta');
|
||||||
// 系统常量
|
// 系统常量
|
||||||
defined('THINK_PATH') or define('THINK_PATH', dirname(__FILE__) . '/');
|
defined('DS') or define('DS', DIRECTORY_SEPARATOR);
|
||||||
defined('LIB_PATH') or define('LIB_PATH', THINK_PATH . 'library/');
|
defined('THINK_PATH') or define('THINK_PATH', dirname(__FILE__).DS);
|
||||||
defined('MODE_PATH') or define('MODE_PATH', THINK_PATH . 'mode/'); // 系统应用模式目录
|
defined('LIB_PATH') or define('LIB_PATH', THINK_PATH.'library'.DS);
|
||||||
defined('TRAIT_PATH') or define('TRAIT_PATH', THINK_PATH . 'traits/');
|
defined('MODE_PATH') or define('MODE_PATH', THINK_PATH.'mode'.DS); // 系统应用模式目录
|
||||||
defined('CORE_PATH') or define('CORE_PATH', LIB_PATH . 'think/');
|
defined('TRAIT_PATH') or define('TRAIT_PATH', THINK_PATH.'traits'.DS);
|
||||||
defined('ORG_PATH') or define('ORG_PATH', LIB_PATH . 'org/');
|
defined('CORE_PATH') or define('CORE_PATH', LIB_PATH.'think'.DS);
|
||||||
defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']) . '/');
|
defined('ORG_PATH') or define('ORG_PATH', LIB_PATH . 'org'.DS);
|
||||||
|
defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']).DS);
|
||||||
defined('COMMON_MODULE') or define('COMMON_MODULE', 'common');
|
defined('COMMON_MODULE') or define('COMMON_MODULE', 'common');
|
||||||
defined('RUNTIME_PATH') or define('RUNTIME_PATH', realpath(APP_PATH) . '/runtime/');
|
defined('RUNTIME_PATH') or define('RUNTIME_PATH', realpath(APP_PATH).DS.'runtime'.DS);
|
||||||
defined('DATA_PATH') or define('DATA_PATH', RUNTIME_PATH . 'data/');
|
defined('DATA_PATH') or define('DATA_PATH', RUNTIME_PATH.'data'.DS);
|
||||||
defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH . 'log/');
|
defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH.'log'.DS);
|
||||||
defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH . 'cache/');
|
defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH.'cache'.DS);
|
||||||
defined('TEMP_PATH') or define('TEMP_PATH', RUNTIME_PATH . 'temp/');
|
defined('TEMP_PATH') or define('TEMP_PATH', RUNTIME_PATH.'temp'.DS);
|
||||||
defined('VENDOR_PATH') or define('VENDOR_PATH', THINK_PATH . 'vendor/');
|
defined('VENDOR_PATH') or define('VENDOR_PATH', THINK_PATH.'vendor'.DS);
|
||||||
defined('EXT') or define('EXT', '.php');
|
defined('EXT') or define('EXT', '.php');
|
||||||
defined('MODEL_LAYER') or define('MODEL_LAYER', 'model');
|
defined('MODEL_LAYER') or define('MODEL_LAYER', 'model');
|
||||||
defined('VIEW_LAYER') or define('VIEW_LAYER', 'view');
|
defined('VIEW_LAYER') or define('VIEW_LAYER', 'view');
|
||||||
@@ -240,10 +241,10 @@ function session($name, $value = '')
|
|||||||
return think\Session::get($name);
|
return think\Session::get($name);
|
||||||
} elseif (is_null($value)) {
|
} elseif (is_null($value)) {
|
||||||
// 删除session
|
// 删除session
|
||||||
think\Session::delete($name);
|
return think\Session::delete($name);
|
||||||
} else {
|
} else {
|
||||||
// 设置session
|
// 设置session
|
||||||
think\Session::set($name, $value);
|
return think\Session::set($name, $value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -263,7 +264,7 @@ function cookie($name, $value = '')
|
|||||||
return think\Cookie::delete($name);
|
return think\Cookie::delete($name);
|
||||||
} else {
|
} else {
|
||||||
// 设置session
|
// 设置session
|
||||||
think\Cookie::set($name, $value);
|
return think\Cookie::set($name, $value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,10 +35,10 @@ class ContentReplace
|
|||||||
{
|
{
|
||||||
if(IS_CGI) {
|
if(IS_CGI) {
|
||||||
//CGI/FASTCGI模式下
|
//CGI/FASTCGI模式下
|
||||||
$_temp = explode('.php',$_SERVER['PHP_SELF']);
|
$_temp = explode('.php',$_SERVER['PHP_SELF']);
|
||||||
$script_name = rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/');
|
$script_name = rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/');
|
||||||
} else {
|
} else {
|
||||||
$script_name = rtrim($_SERVER['SCRIPT_NAME'],'/');
|
$script_name = rtrim($_SERVER['SCRIPT_NAME'],'/');
|
||||||
}
|
}
|
||||||
define('ROOT_URL', rtrim(dirname(str_replace("\\","\/",$script_name)),'/'));
|
define('ROOT_URL', rtrim(dirname(str_replace("\\","\/",$script_name)),'/'));
|
||||||
define('MODULE_URL', ROOT_URL.'/'.(defined('MODULE_ALIAS')?MODULE_ALIAS:MODULE_NAME));
|
define('MODULE_URL', ROOT_URL.'/'.(defined('MODULE_ALIAS')?MODULE_ALIAS:MODULE_NAME));
|
||||||
@@ -47,13 +47,19 @@ class ContentReplace
|
|||||||
|
|
||||||
// 系统默认的特殊变量替换
|
// 系统默认的特殊变量替换
|
||||||
$replace = [
|
$replace = [
|
||||||
'__ROOT__' => ROOT_URL, // 当前网站地址
|
// 当前网站地址
|
||||||
'__APP__' => MODULE_URL, // 当前项目地址
|
'__ROOT__' => ROOT_URL,
|
||||||
'__CONTROLL__' => CONTROLLER_URL, // 当前操作地址
|
// 当前项目地址
|
||||||
'__URL__' => CONTROLLER_URL,
|
'__APP__' => MODULE_URL,
|
||||||
'__ACTION__' => ACTION_URL, // 当前操作地址
|
// 当前操作地址
|
||||||
'__SELF__' => $_SERVER['PHP_SELF'], // 当前页面地址
|
'__CONTROLL__' => CONTROLLER_URL,
|
||||||
'__PUBLIC__' => ROOT_URL.'/Public',// 站点公共目录
|
'__URL__' => CONTROLLER_URL,
|
||||||
|
// 当前操作地址
|
||||||
|
'__ACTION__' => ACTION_URL,
|
||||||
|
// 当前页面地址
|
||||||
|
'__SELF__' => $_SERVER['PHP_SELF'],
|
||||||
|
// 站点公共目录
|
||||||
|
'__PUBLIC__' => ROOT_URL.'/Public',
|
||||||
];
|
];
|
||||||
// 允许用户自定义模板的字符串替换
|
// 允许用户自定义模板的字符串替换
|
||||||
if(is_array(Config::get('tmpl_parse_string')) ){
|
if(is_array(Config::get('tmpl_parse_string')) ){
|
||||||
|
|||||||
@@ -55,18 +55,23 @@ class ReadHtmlCache
|
|||||||
$moduleName = strtolower(MODULE_NAME);
|
$moduleName = strtolower(MODULE_NAME);
|
||||||
$actionName = strtolower(ACTION_NAME);
|
$actionName = strtolower(ACTION_NAME);
|
||||||
if (isset($htmls[$moduleName . ':' . $actionName])) {
|
if (isset($htmls[$moduleName . ':' . $actionName])) {
|
||||||
$html = $htmls[$moduleName . ':' . $actionName]; // 某个模块的操作的静态规则
|
// 某个模块的操作的静态规则
|
||||||
|
$html = $htmls[$moduleName . ':' . $actionName];
|
||||||
} elseif (isset($htmls[$moduleName . ':'])) {
|
} elseif (isset($htmls[$moduleName . ':'])) {
|
||||||
// 某个模块的静态规则
|
// 某个模块的静态规则
|
||||||
$html = $htmls[$moduleName . ':'];
|
$html = $htmls[$moduleName . ':'];
|
||||||
} elseif (isset($htmls[$actionName])) {
|
} elseif (isset($htmls[$actionName])) {
|
||||||
$html = $htmls[$actionName]; // 所有操作的静态规则
|
// 所有操作的静态规则
|
||||||
|
$html = $htmls[$actionName];
|
||||||
} elseif (isset($htmls['*'])) {
|
} elseif (isset($htmls['*'])) {
|
||||||
$html = $htmls['*']; // 全局静态规则
|
// 全局静态规则
|
||||||
|
$html = $htmls['*'];
|
||||||
} elseif (isset($htmls['empty:index']) && !class_exists(MODULE_NAME . 'Action')) {
|
} elseif (isset($htmls['empty:index']) && !class_exists(MODULE_NAME . 'Action')) {
|
||||||
$html = $htmls['empty:index']; // 空模块静态规则
|
// 空模块静态规则
|
||||||
|
$html = $htmls['empty:index'];
|
||||||
} elseif (isset($htmls[$moduleName . ':_empty']) && self::isEmptyAction(MODULE_NAME, ACTION_NAME)) {
|
} elseif (isset($htmls[$moduleName . ':_empty']) && self::isEmptyAction(MODULE_NAME, ACTION_NAME)) {
|
||||||
$html = $htmls[$moduleName . ':_empty']; // 空操作静态规则
|
// 空操作静态规则
|
||||||
|
$html = $htmls[$moduleName . ':_empty'];
|
||||||
}
|
}
|
||||||
if (!empty($html)) {
|
if (!empty($html)) {
|
||||||
// 解读静态规则
|
// 解读静态规则
|
||||||
@@ -88,7 +93,8 @@ class ReadHtmlCache
|
|||||||
$rule = $html[2]($rule);
|
$rule = $html[2]($rule);
|
||||||
}
|
}
|
||||||
// 应用附加函数
|
// 应用附加函数
|
||||||
$cacheTime = isset($html[1]) ? $html[1] : C('HTML_CACHE_TIME'); // 缓存有效期
|
// 缓存有效期
|
||||||
|
$cacheTime = isset($html[1]) ? $html[1] : C('HTML_CACHE_TIME');
|
||||||
// 当前缓存文件
|
// 当前缓存文件
|
||||||
define('HTML_FILE_NAME', HTML_PATH . $rule . C('HTML_FILE_SUFFIX'));
|
define('HTML_FILE_NAME', HTML_PATH . $rule . C('HTML_FILE_SUFFIX'));
|
||||||
return $cacheTime;
|
return $cacheTime;
|
||||||
@@ -130,5 +136,4 @@ class ReadHtmlCache
|
|||||||
$class = new $className;
|
$class = new $className;
|
||||||
return !method_exists($class, $action);
|
return !method_exists($class, $action);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,16 +65,19 @@ class ShowPageTrace
|
|||||||
$tabs = Config::get('trace_page_tabs');
|
$tabs = Config::get('trace_page_tabs');
|
||||||
foreach ($tabs as $name => $title) {
|
foreach ($tabs as $name => $title) {
|
||||||
switch (strtoupper($name)) {
|
switch (strtoupper($name)) {
|
||||||
case 'BASE': // 基本信息
|
// 基本信息
|
||||||
|
case 'BASE':
|
||||||
$trace[$title] = $base;
|
$trace[$title] = $base;
|
||||||
break;
|
break;
|
||||||
case 'FILE': // 文件信息
|
// 文件信息
|
||||||
|
case 'FILE':
|
||||||
$trace[$title] = $info;
|
$trace[$title] = $info;
|
||||||
break;
|
break;
|
||||||
default: // 调试信息
|
// 调试信息
|
||||||
|
default:
|
||||||
$name = strtoupper($name);
|
$name = strtoupper($name);
|
||||||
if (strpos($name, '|')) {
|
if (strpos($name, '|')) {
|
||||||
// 多组信息
|
// 多组信息
|
||||||
$array = explode('|', $name);
|
$array = explode('|', $name);
|
||||||
$result = [];
|
$result = [];
|
||||||
foreach ($array as $name) {
|
foreach ($array as $name) {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
// | Author: liu21st <liu21st@gmail.com>
|
// | Author: liu21st <liu21st@gmail.com>
|
||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
namespace think\behavior;
|
namespace think\behavior;
|
||||||
|
|
||||||
use think\Behavior;
|
use think\Behavior;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -22,10 +23,14 @@ class TokenBuild extends Behavior
|
|||||||
{
|
{
|
||||||
// 行为参数定义
|
// 行为参数定义
|
||||||
protected $options = [
|
protected $options = [
|
||||||
'TOKEN_ON' => false, // 开启令牌验证
|
// 开启令牌验证
|
||||||
'TOKEN_NAME' => '__hash__', // 令牌验证的表单隐藏字段名称
|
'TOKEN_ON' => false,
|
||||||
'TOKEN_TYPE' => 'md5', // 令牌验证哈希规则
|
// 令牌验证的表单隐藏字段名称
|
||||||
'TOKEN_RESET' => true, // 令牌错误后是否重置
|
'TOKEN_NAME' => '__hash__',
|
||||||
|
// 令牌验证哈希规则
|
||||||
|
'TOKEN_TYPE' => 'md5',
|
||||||
|
// 令牌错误后是否重置
|
||||||
|
'TOKEN_RESET' => true,
|
||||||
];
|
];
|
||||||
|
|
||||||
public function run(&$content)
|
public function run(&$content)
|
||||||
@@ -54,7 +59,7 @@ class TokenBuild extends Behavior
|
|||||||
// 标识当前页面唯一性
|
// 标识当前页面唯一性
|
||||||
$tokenKey = md5($_SERVER['REQUEST_URI']);
|
$tokenKey = md5($_SERVER['REQUEST_URI']);
|
||||||
if (isset($_SESSION[$tokenName][$tokenKey])) {
|
if (isset($_SESSION[$tokenName][$tokenKey])) {
|
||||||
// 相同页面不重复生成session
|
// 相同页面不重复生成session
|
||||||
$tokenValue = $_SESSION[$tokenName][$tokenKey];
|
$tokenValue = $_SESSION[$tokenName][$tokenKey];
|
||||||
} else {
|
} else {
|
||||||
$tokenValue = $tokenType(microtime(true));
|
$tokenValue = $tokenType(microtime(true));
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace think;
|
|||||||
abstract class Behavior {
|
abstract class Behavior {
|
||||||
|
|
||||||
// 行为参数 和配置参数设置相同
|
// 行为参数 和配置参数设置相同
|
||||||
protected $options = array();
|
protected $options = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 架构函数
|
* 架构函数
|
||||||
|
|||||||
@@ -124,7 +124,8 @@ class Cookie
|
|||||||
$prefix = $prefix ? $prefix : $config['prefix'];
|
$prefix = $prefix ? $prefix : $config['prefix'];
|
||||||
$name = $prefix . $name;
|
$name = $prefix . $name;
|
||||||
setcookie($name, '', time() - 3600, $config['path'], $config['domain'], $config['secure'], $config['httponly']);
|
setcookie($name, '', time() - 3600, $config['path'], $config['domain'], $config['secure'], $config['httponly']);
|
||||||
unset($_COOKIE[$name]); // 删除指定cookie
|
// 删除指定cookie
|
||||||
|
unset($_COOKIE[$name]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -143,7 +144,7 @@ class Cookie
|
|||||||
$config = self::$config;
|
$config = self::$config;
|
||||||
$prefix = $prefix ? $prefix : $config['prefix'];
|
$prefix = $prefix ? $prefix : $config['prefix'];
|
||||||
if ($prefix) {
|
if ($prefix) {
|
||||||
// 如果前缀为空字符串将不作处理直接返回
|
// 如果前缀为空字符串将不作处理直接返回
|
||||||
foreach ($_COOKIE as $key => $val) {
|
foreach ($_COOKIE as $key => $val) {
|
||||||
if (0 === strpos($key, $prefix)) {
|
if (0 === strpos($key, $prefix)) {
|
||||||
setcookie($key, '', time() - 3600, $config['path'], $config['domain'], $config['secure'], $config['httponly']);
|
setcookie($key, '', time() - 3600, $config['path'], $config['domain'], $config['secure'], $config['httponly']);
|
||||||
|
|||||||
@@ -20,11 +20,13 @@ class Error
|
|||||||
*/
|
*/
|
||||||
public static function appException($e)
|
public static function appException($e)
|
||||||
{
|
{
|
||||||
$error['message'] = $e->getMessage();
|
$error = [
|
||||||
$error['file'] = $e->getFile();
|
'message' => $e->getMessage(),
|
||||||
$error['line'] = $e->getLine();
|
'file' => $e->getFile(),
|
||||||
$error['trace'] = $e->getTraceAsString();
|
'line' => $e->getLine(),
|
||||||
$error['code'] = $e->getCode();
|
'trace' => $e->getTraceAsString(),
|
||||||
|
'code' => $e->getCode(),
|
||||||
|
];
|
||||||
// 记录异常日志
|
// 记录异常日志
|
||||||
Log::record($error['message'], 'ERR');
|
Log::record($error['message'], 'ERR');
|
||||||
// 发送404信息
|
// 发送404信息
|
||||||
@@ -98,9 +100,11 @@ class Error
|
|||||||
exit($message);
|
exit($message);
|
||||||
} elseif (IS_API) {
|
} elseif (IS_API) {
|
||||||
// API接口
|
// API接口
|
||||||
$data['code'] = $code;
|
$data = [
|
||||||
$data['msg'] = $message;
|
'code' => $code,
|
||||||
$data['time'] = NOW_TIME;
|
'msg' => $message,
|
||||||
|
'time' => NOW_TIME,
|
||||||
|
];
|
||||||
Response::returnData($data);
|
Response::returnData($data);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,13 +11,11 @@
|
|||||||
|
|
||||||
namespace think\model;
|
namespace think\model;
|
||||||
|
|
||||||
use traits\think\model\extend;
|
T('think/model/adv');
|
||||||
use traits\think\model\query;
|
|
||||||
|
|
||||||
T('think/model/extend');
|
|
||||||
T('think/model/query');
|
T('think/model/query');
|
||||||
|
|
||||||
class ExtendModel extends \think\model
|
class Adv extends \think\model
|
||||||
{
|
{
|
||||||
use extend, query;
|
use traits\think\model\adv;
|
||||||
|
use traits\think\model\query;
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,7 @@ use think\Loader;
|
|||||||
* MongoModel模型类
|
* MongoModel模型类
|
||||||
* 实现了ODM和ActiveRecords模式
|
* 实现了ODM和ActiveRecords模式
|
||||||
*/
|
*/
|
||||||
class MongoModel extends \Think\Model
|
class Mongo extends \Think\Model
|
||||||
{
|
{
|
||||||
// 主键类型
|
// 主键类型
|
||||||
const TYPE_OBJECT = 1;
|
const TYPE_OBJECT = 1;
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
namespace think\model;
|
namespace think\model;
|
||||||
|
|
||||||
T('think/model/relation');
|
T('think/model/relation');
|
||||||
class RelationModel extends \think\model
|
class Relation extends \think\model
|
||||||
{
|
{
|
||||||
use \traits\think\model\relation;
|
use \traits\think\model\relation;
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
namespace think\model;
|
namespace think\model;
|
||||||
|
|
||||||
T('think/model/view');
|
T('think/model/view');
|
||||||
class ViewModel extends \think\model
|
class View extends \think\model
|
||||||
{
|
{
|
||||||
use \traits\think\model\view;
|
use \traits\think\model\view;
|
||||||
}
|
}
|
||||||
@@ -69,10 +69,12 @@ class Response
|
|||||||
*/
|
*/
|
||||||
public static function result($data, $code = 0, $msg = '', $type = '')
|
public static function result($data, $code = 0, $msg = '', $type = '')
|
||||||
{
|
{
|
||||||
$result['code'] = $code;
|
$result = [
|
||||||
$result['msg'] = $msg;
|
'code' => $code,
|
||||||
$result['time'] = NOW_TIME;
|
'msg' => $msg,
|
||||||
$result['data'] = $data;
|
'time' => NOW_TIME,
|
||||||
|
'data' => $data
|
||||||
|
];
|
||||||
self::returnData($result, $type);
|
self::returnData($result, $type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,19 +21,19 @@ return [
|
|||||||
'alias' => [
|
'alias' => [
|
||||||
'think\App' => CORE_PATH . 'app' . EXT,
|
'think\App' => CORE_PATH . 'app' . EXT,
|
||||||
'think\Log' => CORE_PATH . 'log' . EXT,
|
'think\Log' => CORE_PATH . 'log' . EXT,
|
||||||
'think\log\driver\File' => CORE_PATH . 'log/driver/file' . EXT,
|
'think\log\driver\File' => CORE_PATH . 'log' . DS . 'driver' . DS . 'file' . EXT,
|
||||||
'think\Config' => CORE_PATH . 'config' . EXT,
|
'think\Config' => CORE_PATH . 'config' . EXT,
|
||||||
'think\Route' => CORE_PATH . 'route' . EXT,
|
'think\Route' => CORE_PATH . 'route' . EXT,
|
||||||
'think\Exception' => CORE_PATH . 'exception' . EXT,
|
'think\Exception' => CORE_PATH . 'exception' . EXT,
|
||||||
'think\Model' => CORE_PATH . 'model' . EXT,
|
'think\Model' => CORE_PATH . 'model' . EXT,
|
||||||
'think\Db' => CORE_PATH . 'db' . EXT,
|
'think\Db' => CORE_PATH . 'db' . EXT,
|
||||||
'think\Db\Driver' => CORE_PATH . 'db/driver' . EXT,
|
'think\Db\Driver' => CORE_PATH . 'db'.DS.'driver' . EXT,
|
||||||
'think\Template' => CORE_PATH . 'template' . EXT,
|
'think\Template' => CORE_PATH . 'template' . EXT,
|
||||||
'think\view\driver\Think' => CORE_PATH . 'view/driver/think' . EXT,
|
'think\view\driver\Think' => CORE_PATH . 'view' . DS . 'driver' . DS . 'think' . EXT,
|
||||||
'think\template\driver\File' => CORE_PATH . 'template/driver/file' . EXT,
|
'think\template\driver\File' => CORE_PATH . 'template' . DS . 'driver' . DS . 'file' . EXT,
|
||||||
'think\Error' => CORE_PATH . 'error' . EXT,
|
'think\Error' => CORE_PATH . 'error' . EXT,
|
||||||
'think\Cache' => CORE_PATH . 'cache' . EXT,
|
'think\Cache' => CORE_PATH . 'cache' . EXT,
|
||||||
'think\cache\driver\File' => CORE_PATH . 'cache/driver/file' . EXT,
|
'think\cache\driver\File' => CORE_PATH . 'cache' . DS . 'driver' . DS . 'file' . EXT,
|
||||||
'think\Hook' => CORE_PATH . 'hook' . EXT,
|
'think\Hook' => CORE_PATH . 'hook' . EXT,
|
||||||
'think\Session' => CORE_PATH . 'session' . EXT,
|
'think\Session' => CORE_PATH . 'session' . EXT,
|
||||||
'think\Cookie' => CORE_PATH . 'cookie' . EXT,
|
'think\Cookie' => CORE_PATH . 'cookie' . EXT,
|
||||||
|
|||||||
@@ -14,9 +14,8 @@ namespace traits\think\model;
|
|||||||
use think\Lang;
|
use think\Lang;
|
||||||
use think\Loader;
|
use think\Loader;
|
||||||
|
|
||||||
trait Extend
|
trait Adv
|
||||||
{
|
{
|
||||||
|
|
||||||
protected $partition = [];
|
protected $partition = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Reference in New Issue
Block a user