This commit is contained in:
upfy@qq.com
2015-12-08 09:57:45 +08:00
15 changed files with 98 additions and 74 deletions

View File

@@ -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);
} }
} }

View File

@@ -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')) ){

View File

@@ -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);
} }
} }

View File

@@ -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) {

View File

@@ -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));

View File

@@ -19,7 +19,7 @@ namespace think;
abstract class Behavior { abstract class Behavior {
// 行为参数 和配置参数设置相同 // 行为参数 和配置参数设置相同
protected $options = array(); protected $options = [];
/** /**
* 架构函数 * 架构函数

View File

@@ -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']);

View File

@@ -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();
} }

View File

@@ -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;
} }

View File

@@ -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;

View File

@@ -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;
} }

View File

@@ -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;
} }

View File

@@ -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);
} }

View File

@@ -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,

View File

@@ -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 = [];
/** /**