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