php think-Loader类(方法)实例源码

下面列出了php think-Loader 类(方法)源码代码实例,从而了解它的用法。

作者: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);


问题


面经


文章

微信
公众号

扫码关注公众号