作者:Lofanm
项目:thin
/**
* 架构函数
* @access public
*/
public function __construct()
{
//控制器初始化
if (method_exists($this, '_initialize')) {
$this->_initialize();
}
//导入类库
\think\Loader::import('vendor.Hprose.HproseHttpServer');
//实例化HproseHttpServer
$server = new \HproseHttpServer();
if ($this->allowMethodList) {
$methods = $this->allowMethodList;
} else {
$methods = get_class_methods($this);
$methods = array_diff($methods, array('__construct', '__call', '_initialize'));
}
$server->addMethods($methods, $this);
if (APP_DEBUG || $this->debug) {
$server->setDebugEnabled(true);
}
// Hprose设置
$server->setCrossDomainEnabled($this->crossDomain);
$server->setP3PEnabled($this->P3P);
$server->setGetEnabled($this->get);
// 启动server
$server->start();
}
作者:cjang
项目:cwm
/**
* 登陆
* @param string $callback 登陆成功后的回调地址
*/
public function index($callback = '')
{
if (IS_POST) {
$validate = Loader::validate('Login');
$data = $this->request->post();
if (config('verify_code')) {
$validateResult = $validate->check($data);
} else {
$validateResult = $validate->scene('not_verify')->check($data);
}
if (!$validateResult) {
return $this->error($validate->getError(), '');
}
$user = Db::name('Member')->where('account', $data['account'])->find();
if (!$user) {
return $this->error('用户不存在', '');
} elseif ($user['status'] != 1) {
return $this->error('用户被禁用', '');
} elseif ($user['password'] != umd5($data['password'])) {
logs('登陆失败:密码错误', '', $user['id']);
return $this->error('密码错误', '');
} else {
self::autoLogin($user);
return $this->success('登陆成功', $callback ? $callback : url('system/index/index'));
}
} else {
if (isLogin()) {
$this->redirect(url('system/index/index'));
}
return view();
}
}
作者:Lofanm
项目:thin
/**
* 架构函数
* @access public
*/
public function __construct()
{
//控制器初始化
if (method_exists($this, '_initialize')) {
$this->_initialize();
}
//导入类库
\think\Loader::import('vendor.jsonrpc.jsonRPCServer');
// 启动server
\jsonRPCServer::handle($this);
}
作者:cjang
项目:cwm
/**
* 利用TP核心的单图片上传方法
*/
public function picture()
{
$Storage = Loader::model('Storage');
$options = ['ext' => ['jpg', 'gif', 'png', 'jpeg']];
$info = $Storage->upload('upload', $options);
if (false !== $info) {
return $this->success('上传成功', '', $info);
} else {
return $this->error($Storage->getError());
}
}
作者:xuyi591
项目:ipensof
private static function init()
{
// 加载初始化文件
if (is_file(APP_PATH . 'init' . EXT)) {
include APP_PATH . 'init' . EXT;
// 加载模块配置
$config = Config::get();
} else {
// 加载模块配置
$config = Config::load(APP_PATH . 'config' . EXT);
// 加载应用状态配置
if ($config['app_status']) {
$config = Config::load(APP_PATH . $config['app_status'] . EXT);
}
// 读取扩展配置文件
if ($config['extra_config_list']) {
foreach ($config['extra_config_list'] as $name => $file) {
$filename = APP_PATH . $file . EXT;
Config::load($filename, is_string($name) ? $name : pathinfo($filename, PATHINFO_FILENAME));
}
}
// 加载别名文件
if (is_file(APP_PATH . 'alias' . EXT)) {
Loader::addMap(include APP_PATH . 'alias' . EXT);
}
// 加载行为扩展文件
if (APP_HOOK && is_file(APP_PATH . 'tags' . EXT)) {
Hook::import(include APP_PATH . 'tags' . EXT);
}
// 加载公共文件
if (is_file(APP_PATH . 'common' . EXT)) {
include APP_PATH . 'common' . EXT;
}
}
// 注册根命名空间
if (!empty($config['root_namespace'])) {
Loader::addNamespace($config['root_namespace']);
}
// 加载额外文件
if (!empty($config['extra_file_list'])) {
foreach ($config['extra_file_list'] as $file) {
$file = strpos($file, '.') ? $file : APP_PATH . $file . EXT;
if (is_file($file)) {
include_once $file;
}
}
}
// 设置系统时区
date_default_timezone_set($config['default_timezone']);
// 监听app_init
APP_HOOK && Hook::listen('app_init');
}
作者:cjang
项目:cwm
/**
* [add description]
*/
public function add()
{
if (IS_POST) {
$data = $this->request->post();
$validate = Loader::validate('Auth');
if (!$validate->check($data)) {
return $this->error($validate->getError());
}
$data = ['title' => $data['title'], 'create_time' => NOW_TIME, 'update_time' => 0, 'status' => $data['status'], 'remark' => $data['remark'], 'rules' => ''];
if (Db::name('Auth')->insert($data)) {
return $this->success();
} else {
return $this->error();
}
} else {
return $this->fetch('edit');
}
}
作者:cjang
项目:cwm
/**
* 修改密码
*/
public function password()
{
if (IS_POST) {
$data = $this->request->post();
$validate = Loader::validate('Member');
if (!$validate->scene('changepass')->check($data)) {
return $this->error($validate->getError());
}
$passData = ['password' => umd5($data['newpass']), 'update_time' => NOW_TIME];
if (Db::name('Member')->where('id', UID)->update($passData)) {
return $this->success('密码修改成功');
} else {
return $this->error();
}
} else {
return $this->fetch();
}
}
作者:cjang
项目:cwm
/**
* [edit description]
* @param integer $id [description]
*/
public function edit($id)
{
if (IS_POST) {
$data = $this->request->post();
$validate = Loader::validate('Category');
if (!$validate->check($data)) {
return $this->error($validate->getError());
}
if (Loader::model('Category')->update($data)) {
return $this->success();
} else {
return $this->error();
}
} else {
$this->assign('info', Db::name('Category')->find($id));
$this->assign('upcate_list', Loader::model('Category')->treeSelect('', $id));
return $this->fetch('edit');
}
}
作者:cjang
项目:cwm
/**
* 编辑
* @param [type] $id 主键
*/
public function edit($id)
{
if (IS_POST) {
$data = $this->request->post();
$validate = Loader::validate('Menu');
if (!$validate->check($data)) {
return $this->error($validate->getError());
}
if (Loader::model('Menu')->update($data)) {
session('system_menu_list', null);
return $this->success();
} else {
return $this->error();
}
} else {
$this->assign('up_menus', self::_treeShow($id));
$this->assign('info', Db::name('Menu')->where('id', $id)->find());
return $this->fetch();
}
}
作者:cjang
项目:cwm
/**
* 加载系统扩展配置
*/
public static function load()
{
$config = \think\Cache::get('db_config_cache_data');
if (!$config) {
// 在这里先判断一下数据库是否已经正确安装
$Db = \think\Loader::db();
$Query = $Db->query("SHOW TABLES LIKE '" . \think\Config::get('database.prefix') . "config'");
if (empty($Query)) {
self::install();
}
$data = \think\Db::name('Config')->where('status', 1)->field('type,name,value')->select();
$config = [];
if ($data && is_array($data)) {
foreach ($data as $value) {
$config[$value['name']] = self::parse($value['type'], $value['value']);
}
}
\think\Cache::set('db_config_cache_data', $config);
}
\think\Config::set($config);
}
作者:Lofanm
项目:thin
/**
* 架构函数
* @access public
*/
public function __construct()
{
//控制器初始化
if (method_exists($this, '_initialize')) {
$this->_initialize();
}
//导入类库
\think\Loader::import('vendor.phprpc.phprpc_server');
//实例化phprpc
$server = new \PHPRPC_Server();
if ($this->allowMethodList) {
$methods = $this->allowMethodList;
} else {
$methods = get_class_methods($this);
$methods = array_diff($methods, array('__construct', '__call', '_initialize'));
}
$server->add($methods, $this);
if (APP_DEBUG || $this->debug) {
$server->setDebugMode(true);
}
$server->setEnableGZIP(true);
$server->start();
echo $server->comment();
}
作者:dingyi-Histor
项目:ime-daimaduan.c
/**
* 利用__call方法实现一些特殊的Model方法
* @access public
* @param string $method 方法名称
* @param array $args 调用参数
* @return mixed
*/
public function __call($method, $args)
{
if (in_array(strtolower($method), ['count', 'sum', 'min', 'max', 'avg'], true)) {
// 统计查询的实现
$field = isset($args[0]) ? $args[0] : '*';
return $this->getField(strtoupper($method) . '(' . $field . ') AS tp_' . $method);
} elseif (strtolower(substr($method, 0, 5)) == 'getby') {
// 根据某个字段获取记录
$field = Loader::parseName(substr($method, 5));
$where[$field] = $args[0];
return $this->where($where)->find();
} elseif (strtolower(substr($method, 0, 10)) == 'getfieldby') {
// 根据某个字段获取记录的某个值
$name = Loader::parseName(substr($method, 10));
$where[$name] = $args[0];
return $this->where($where)->getField($args[1]);
} elseif (isset($this->scope[$method])) {
// 命名范围的单独调用支持
return $this->scope($method, $args[0]);
} else {
throw new \think\Exception(__CLASS__ . ':' . $method . Lang::get('_METHOD_NOT_EXIST_'));
return;
}
}
作者:top-thin
项目:framewor
/**
* 验证数据
* @access protected
* @param array $data 数据
* @param string|array $validate 验证器名或者验证规则数组
* @param array $message 提示信息
* @param bool $batch 是否批量验证
* @param mixed $callback 回调方法(闭包)
* @return array|string|true
* @throws ValidateException
*/
protected function validate($data, $validate, $message = [], $batch = false, $callback = null)
{
if (is_array($validate)) {
$v = Loader::validate();
$v->rule($validate);
} else {
if (strpos($validate, '.')) {
// 支持场景
list($validate, $scene) = explode('.', $validate);
}
$v = Loader::validate($validate);
if (!empty($scene)) {
$v->scene($scene);
}
}
// 是否批量验证
if ($batch || $this->batchValidate) {
$v->batch(true);
}
if (is_array($message)) {
$v->message($message);
}
if ($callback && is_callable($callback)) {
call_user_func_array($callback, [$v, &$data]);
}
if (!$v->check($data)) {
if ($this->failException) {
throw new ValidateException($v->getError());
} else {
return $v->getError();
}
} else {
return true;
}
}
作者:pangPytho
项目:iNewsCM
/**
* 快速导入第三方框架类库 所有第三方框架的类库文件统一放到 系统的Vendor目录下面
* @param string $class 类库
* @param string $ext 类库后缀
* @return boolean
*/
function vendor($class, $ext = EXT)
{
return Loader::import($class, VENDOR_PATH, $ext);
}
作者:samplecm
项目:framewor
/**
* 自动定位模板文件
* @access private
* @param string $template 模板文件规则
* @return string
*/
private function parseTemplate($template)
{
if (empty($this->config['view_path'])) {
$this->config['view_path'] = App::$modulePath . 'view' . DS;
}
if (strpos($template, '@')) {
list($module, $template) = explode('@', $template);
$path = APP_PATH . $module . DS . 'view' . DS;
} else {
$path = $this->config['view_path'];
}
// 分析模板文件规则
$request = Request::instance();
$controller = Loader::parseName($request->controller());
if ($controller && 0 !== strpos($template, '/')) {
$depr = $this->config['view_depr'];
$template = str_replace(['/', ':'], $depr, $template);
if ('' == $template) {
// 如果模板文件名为空 按照默认规则定位
$template = str_replace('.', DS, $controller) . $depr . $request->action();
} elseif (false === strpos($template, $depr)) {
$template = str_replace('.', DS, $controller) . $depr . $template;
}
}
return $path . ltrim($template, '/') . '.' . ltrim($this->config['view_suffix'], '.');
}
作者:GDdar
项目:cic
protected static function parseUrl($url)
{
$request = Request::instance();
if (0 === strpos($url, '/')) {
// 直接作为路由地址解析
$url = substr($url, 1);
} elseif (false !== strpos($url, '\\')) {
// 解析到类
$url = ltrim(str_replace('\\', '/', $url), '/');
} elseif (0 === strpos($url, '@')) {
// 解析到控制器
$url = substr($url, 1);
} else {
// 解析到 模块/控制器/操作
$module = $request->module();
$module = $module ? $module . '/' : '';
$controller = $request->controller();
if ('' == $url) {
// 空字符串输出当前的 模块/控制器/操作
$url = $module . $controller . '/' . $request->action();
} else {
$path = explode('/', $url);
$action = Config::get('url_convert') ? strtolower(array_pop($path)) : array_pop($path);
$controller = empty($path) ? $controller : (Config::get('url_convert') ? Loader::parseName(array_pop($path)) : array_pop($path));
$module = empty($path) ? $module : array_pop($path) . '/';
$url = $module . $controller . '/' . $action;
}
}
return $url;
}
作者:Lofanm
项目:thin
/**
* 关联数据验证
* @access protected
* @param mixed $data 数据对象
* @param string $name 关联名称
* @return mixed
*/
protected function crRelation(&$data, $name = '')
{
if (empty($data) && !empty($this->data)) {
$data = $this->data;
} elseif (!is_array($data)) {
// 数据无效返回
return false;
}
if (!empty($this->_link)) {
$fields = $this->getFields();
// 遍历关联定义
foreach ($this->_link as $key => $val) {
// 操作制定关联类型
$mappingName = !empty($val['mapping_name']) ? $val['mapping_name'] : $key;
// 映射名称
if (empty($name) || true === $name || $mappingName == $name || is_array($name) && in_array($mappingName, $name)) {
// 操作制定的关联
$mappingType = !empty($val['mapping_type']) ? $val['mapping_type'] : $val;
// 关联类型
$mappingClass = !empty($val['class_name']) ? $val['class_name'] : $key;
// 关联类名
$mappingKey = !empty($val['mapping_key']) ? $val['mapping_key'] : $this->getPk();
// 关联键名
if (strtoupper($mappingClass) == strtoupper($this->name) || !isset($data[$mappingName])) {
continue;
// 自引用关联或提交关联数据跳过
}
// 获取关联model对象
$model = \think\Loader::model($mappingClass);
$_data = $data[$mappingName];
unset($data[$key]);
if ($_data = $model->token(false)->create($_data)) {
$data[$mappingName] = $_data;
$fields[] = $mappingName;
} else {
$error = $model->getError();
if ($this->patchValidate) {
$this->error[$mappingName] = $error;
} else {
$this->error = $error;
return false;
}
}
}
}
// 过滤非法字段数据
$diff = array_diff(array_keys($data), $fields);
foreach ($diff as $key) {
unset($data[$key]);
}
}
}
作者:pangPytho
项目:iNewsCM
// 配置文件目录
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);
// 载入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}");
}
}
}
// 注册自动加载
\think\Loader::register();
// 注册错误和异常处理机制
\think\Error::register();
// 加载惯例配置文件
\think\Config::set(include THINK_PATH . 'convention' . EXT);
作者:top-thin
项目:framewor
<?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 <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think;
\think\Loader::import('controller/Jump', TRAIT_PATH, EXT);
use think\Exception;
use think\exception\ValidateException;
class Controller
{
use \traits\controller\Jump;
// 视图类实例
protected $view;
// Request实例
protected $request;
// 验证失败是否抛出异常
protected $failException = false;
// 是否批量验证
protected $batchValidate = false;
/**
* 前置操作方法列表
* @var array $beforeActionList
* @access protected
作者:amite
项目:thin
<?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 <liu21st@gmail.com>
// +----------------------------------------------------------------------
// 测试入口文件
define('IN_UNIT_TEST', true);
$_SERVER['REQUEST_METHOD'] = 'GET';
// 定义项目测试基础路径
define('TEST_PATH', __DIR__ . '/');
// 定义项目路径
define('APP_PATH', __DIR__ . '/../../application/');
// 开启调试模式
define('APP_DEBUG', true);
// 加载框架引导文件
require __DIR__ . '/../start.php';
\think\Loader::addNamespace('tests', TEST_PATH);