当前位置: 首页>>代码示例>>PHP>>正文


PHP Loader::action方法代码示例

本文整理汇总了PHP中think\Loader::action方法的典型用法代码示例。如果您正苦于以下问题:PHP Loader::action方法的具体用法?PHP Loader::action怎么用?PHP Loader::action使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在think\Loader的用法示例。


在下文中一共展示了Loader::action方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: W

/**
 * 渲染输出Widget
 * @param string $name Widget名称
 * @param array $data 传人的参数
 * @return mixed
 */
function W($name, $data = [])
{
    return \think\Loader::action($name, $data, 'Widget');
}
开发者ID:yuhongjie,项目名称:think,代码行数:10,代码来源:helper.php

示例2: run

 /**
  * 执行应用程序
  * @access public
  * @param \think\Request $request Request对象
  * @return \think\Response
  * @throws Exception
  */
 public static function run($request)
 {
     // 初始化应用(公共模块)
     self::initModule(COMMON_MODULE, Config::get());
     // 获取配置参数
     $config = Config::get();
     // 注册根命名空间
     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');
     // 开启多语言机制
     if ($config['lang_switch_on']) {
         // 获取当前语言
         defined('LANG_SET') or define('LANG_SET', Lang::range());
         // 加载系统语言包
         Lang::load(THINK_PATH . 'lang' . DS . LANG_SET . EXT);
         if (!APP_MULTI_MODULE) {
             Lang::load(APP_PATH . 'lang' . DS . LANG_SET . EXT);
         }
     }
     // 获取当前请求的调度信息
     $dispatch = $request->dispatch();
     if (empty($dispatch)) {
         // 未指定调度类型 则进行URL路由检测
         $dispatch = self::route($request, $config);
     }
     // 记录路由信息
     APP_DEBUG && Log::record('[ ROUTE ] ' . var_export($dispatch, true), 'info');
     // 监听app_begin
     APP_HOOK && Hook::listen('app_begin', $dispatch);
     try {
         switch ($dispatch['type']) {
             case 'redirect':
                 // 执行重定向跳转
                 header('Location: ' . $dispatch['url'], true, $dispatch['status']);
                 break;
             case 'module':
                 // 模块/控制器/操作
                 $data = self::module($dispatch['module'], $config);
                 break;
             case 'controller':
                 // 执行控制器操作
                 $data = Loader::action($dispatch['controller'], $dispatch['params']);
                 break;
             case 'method':
                 // 执行回调方法
                 $data = self::invokeMethod($dispatch['method'], $dispatch['params']);
                 break;
             case 'function':
                 // 规则闭包
                 $data = self::invokeFunction($dispatch['function'], $dispatch['params']);
                 break;
             case 'finish':
                 // 已经完成 不再继续执行
                 break;
             default:
                 throw new Exception('dispatch type not support', 10008);
         }
     } catch (HttpResponseException $exception) {
         $data = $exception->getResponse();
     }
     // 输出数据到客户端
     if (isset($data)) {
         if ($data instanceof Response) {
             return $data->send();
         } else {
             // 监听app_end
             APP_HOOK && Hook::listen('app_end', $data);
             // 自动响应输出
             return Response::instance()->send($data, '', Config::get('response_return'));
         }
     }
 }
开发者ID:xuyi5918,项目名称:ipensoft,代码行数:93,代码来源:App.php

示例3: action

 /**
  * 调用模块的操作方法 参数格式 [模块/控制器/]操作
  * @param string        $url 调用地址
  * @param string|array  $vars 调用参数 支持字符串和数组
  * @param string        $layer 要调用的控制层名称
  * @param bool          $appendSuffix 是否添加类名后缀
  * @return mixed
  */
 function action($url, $vars = [], $layer = 'controller', $appendSuffix = false)
 {
     return Loader::action($url, $vars, $layer, $appendSuffix);
 }
开发者ID:pangPython,项目名称:iNewsCMS,代码行数:12,代码来源:helper.php

示例4: run

 /**
  * 执行应用程序
  * @access public
  * @param Request $request Request对象
  * @return Response
  * @throws Exception
  */
 public static function run(Request $request = null)
 {
     is_null($request) && ($request = Request::instance());
     if ('ico' == $request->ext()) {
         throw new HttpException(404, 'ico file not exists');
     }
     $config = self::initCommon();
     try {
         // 开启多语言机制
         if ($config['lang_switch_on']) {
             // 获取当前语言
             $request->langset(Lang::detect());
             // 加载系统语言包
             Lang::load(THINK_PATH . 'lang' . DS . $request->langset() . EXT);
             if (!$config['app_multi_module']) {
                 Lang::load(APP_PATH . 'lang' . DS . $request->langset() . EXT);
             }
         }
         // 获取应用调度信息
         $dispatch = self::$dispatch;
         if (empty($dispatch)) {
             // 进行URL路由检测
             $dispatch = self::routeCheck($request, $config);
         }
         // 记录当前调度信息
         $request->dispatch($dispatch);
         // 记录路由信息
         self::$debug && Log::record('[ ROUTE ] ' . var_export($dispatch, true), 'info');
         // 监听app_begin
         Hook::listen('app_begin', $dispatch);
         switch ($dispatch['type']) {
             case 'redirect':
                 // 执行重定向跳转
                 $data = Response::create($dispatch['url'], 'redirect')->code($dispatch['status']);
                 break;
             case 'module':
                 // 模块/控制器/操作
                 $data = self::module($dispatch['module'], $config, isset($dispatch['convert']) ? $dispatch['convert'] : null);
                 break;
             case 'controller':
                 // 执行控制器操作
                 $data = Loader::action($dispatch['controller'], $dispatch['params']);
                 break;
             case 'method':
                 // 执行回调方法
                 $data = self::invokeMethod($dispatch['method'], $dispatch['params']);
                 break;
             case 'function':
                 // 执行闭包
                 $data = self::invokeFunction($dispatch['function'], $dispatch['params']);
                 break;
             case 'response':
                 $data = $dispatch['response'];
                 break;
             default:
                 throw new \InvalidArgumentException('dispatch type not support');
         }
     } catch (HttpResponseException $exception) {
         $data = $exception->getResponse();
     }
     // 清空类的实例化
     Loader::clearInstance();
     // 输出数据到客户端
     if ($data instanceof Response) {
         $response = $data;
     } elseif (!is_null($data)) {
         // 默认自动识别响应输出类型
         $isAjax = $request->isAjax();
         $type = $isAjax ? Config::get('default_ajax_return') : Config::get('default_return_type');
         $response = Response::create($data, $type);
     } else {
         $response = Response::create();
     }
     // 监听app_end
     Hook::listen('app_end', $response);
     // Trace调试注入
     if (Config::get('app_trace')) {
         Debug::inject($response);
     }
     return $response;
 }
开发者ID:GDdark,项目名称:cici,代码行数:88,代码来源:App.php

示例5: action

/**
 * 调用模块的操作方法 参数格式 [模块/控制器/]操作
 * @param string $url 调用地址
 * @param string|array $vars 调用参数 支持字符串和数组
 * @param string $layer 要调用的控制层名称
 * @return mixed
 */
function action($url, $vars = [], $layer = CONTROLLER_LAYER)
{
    return Loader::action($url, $vars, $layer);
}
开发者ID:xuyi5918,项目名称:ipensoft,代码行数:11,代码来源:helper.php

示例6: run

 /**
  * 执行应用程序
  * @access public
  * @param Request $request Request对象
  * @return Response
  * @throws Exception
  */
 public static function run(Request $request = null)
 {
     is_null($request) && ($request = Request::instance());
     try {
         $config = self::initCommon();
         if (defined('BIND_MODULE')) {
             // 模块/控制器绑定
             BIND_MODULE && Route::bind(BIND_MODULE);
         } elseif ($config['auto_bind_module']) {
             // 入口自动绑定
             $name = pathinfo($request->baseFile(), PATHINFO_FILENAME);
             if ($name && 'index' != $name && is_dir(APP_PATH . $name)) {
                 Route::bind($name);
             }
         }
         $request->filter($config['default_filter']);
         if ($config['lang_switch_on']) {
             // 开启多语言机制 检测当前语言
             Lang::detect();
         } else {
             // 读取默认语言
             Lang::range($config['default_lang']);
         }
         $request->langset(Lang::range());
         // 加载系统语言包
         Lang::load([THINK_PATH . 'lang' . DS . $request->langset() . EXT, APP_PATH . 'lang' . DS . $request->langset() . EXT]);
         // 获取应用调度信息
         $dispatch = self::$dispatch;
         if (empty($dispatch)) {
             // 进行URL路由检测
             $dispatch = self::routeCheck($request, $config);
         }
         // 记录当前调度信息
         $request->dispatch($dispatch);
         // 记录路由和请求信息
         if (self::$debug) {
             Log::record('[ ROUTE ] ' . var_export($dispatch, true), 'info');
             Log::record('[ HEADER ] ' . var_export($request->header(), true), 'info');
             Log::record('[ PARAM ] ' . var_export($request->param(), true), 'info');
         }
         // 监听app_begin
         Hook::listen('app_begin', $dispatch);
         switch ($dispatch['type']) {
             case 'redirect':
                 // 执行重定向跳转
                 $data = Response::create($dispatch['url'], 'redirect')->code($dispatch['status']);
                 break;
             case 'module':
                 // 模块/控制器/操作
                 $data = self::module($dispatch['module'], $config, isset($dispatch['convert']) ? $dispatch['convert'] : null);
                 break;
             case 'controller':
                 // 执行控制器操作
                 $data = Loader::action($dispatch['controller']);
                 break;
             case 'method':
                 // 执行回调方法
                 $data = self::invokeMethod($dispatch['method']);
                 break;
             case 'function':
                 // 执行闭包
                 $data = self::invokeFunction($dispatch['function']);
                 break;
             case 'response':
                 $data = $dispatch['response'];
                 break;
             default:
                 throw new \InvalidArgumentException('dispatch type not support');
         }
     } catch (HttpResponseException $exception) {
         $data = $exception->getResponse();
     }
     // 清空类的实例化
     Loader::clearInstance();
     // 输出数据到客户端
     if ($data instanceof Response) {
         $response = $data;
     } elseif (!is_null($data)) {
         // 默认自动识别响应输出类型
         $isAjax = $request->isAjax();
         $type = $isAjax ? Config::get('default_ajax_return') : Config::get('default_return_type');
         $response = Response::create($data, $type);
     } else {
         $response = Response::create();
     }
     // 监听app_end
     Hook::listen('app_end', $response);
     return $response;
 }
开发者ID:pangPython,项目名称:iNewsCMS,代码行数:96,代码来源:App.php


注:本文中的think\Loader::action方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。