本文整理汇总了PHP中Hook::listen方法的典型用法代码示例。如果您正苦于以下问题:PHP Hook::listen方法的具体用法?PHP Hook::listen怎么用?PHP Hook::listen使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Hook
的用法示例。
在下文中一共展示了Hook::listen方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: ajaxReturn
/**
* Ajax方式返回数据到客户端
* @access protected
* @param mixed $data 要返回的数据
* @param String $type AJAX返回数据格式
* @return void
*/
protected function ajaxReturn($data, $type = '', $json_option = 0)
{
$data['referer'] = $data['url'] ? $data['url'] : "";
$data['state'] = $data['status'] ? "success" : "fail";
if (empty($type)) {
$type = C('DEFAULT_AJAX_RETURN');
}
switch (strtoupper($type)) {
case 'JSON':
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
exit(json_encode($data, $json_option));
case 'XML':
// 返回xml格式数据
header('Content-Type:text/xml; charset=utf-8');
exit(xml_encode($data));
case 'JSONP':
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
$handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
exit($handler . '(' . json_encode($data, $json_option) . ');');
case 'EVAL':
// 返回可执行的js脚本
header('Content-Type:text/html; charset=utf-8');
exit($data);
case 'AJAX_UPLOAD':
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:text/html; charset=utf-8');
exit(json_encode($data, $json_option));
default:
// 用于扩展其他返回格式数据
Hook::listen('ajax_return', $data);
}
}
示例2: init
/**
* 应用程序初始化
* @access public
* @return void
*/
public static function init()
{
// 加载动态应用公共文件和配置
load_ext_file(COMMON_PATH);
// 日志目录转换为绝对路径 默认情况下存储到公共模块下面
C('LOG_PATH', realpath(LOG_PATH) . '/Common/');
// 定义当前请求的系统常量
define('NOW_TIME', $_SERVER['REQUEST_TIME']);
define('REQUEST_METHOD', $_SERVER['REQUEST_METHOD']);
define('IS_GET', REQUEST_METHOD == 'GET' ? true : false);
define('IS_POST', REQUEST_METHOD == 'POST' ? true : false);
define('IS_PUT', REQUEST_METHOD == 'PUT' ? true : false);
define('IS_DELETE', REQUEST_METHOD == 'DELETE' ? true : false);
// URL调度
Dispatcher::dispatch();
if (C('REQUEST_VARS_FILTER')) {
// 全局安全过滤
array_walk_recursive($_GET, 'think_filter');
array_walk_recursive($_POST, 'think_filter');
array_walk_recursive($_REQUEST, 'think_filter');
}
// URL调度结束标签
Hook::listen('url_dispatch');
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' || !empty($_POST[C('VAR_AJAX_SUBMIT')]) || !empty($_GET[C('VAR_AJAX_SUBMIT')]) ? true : false);
// TMPL_EXCEPTION_FILE 改为绝对地址
C('TMPL_EXCEPTION_FILE', realpath(C('TMPL_EXCEPTION_FILE')));
return;
}
示例3: run
/**
* 运行框架
*/
public static function run()
{
try {
self::init();
Hook::init(BASE_PATH);
Hook::listen('appBegin');
Hook::listen('routeParseUrl', array(Config::get('REWRITE_RULE'), Config::get('REWRITE_ON')));
//default route
if (!defined('APP_NAME') || !defined('CONTROLLER_NAME') || !defined('ACTION_NAME')) {
Route::parseUrl(Config::get('REWRITE_RULE'), Config::get('REWRITE_ON'));
}
//execute action
$controller = '\\app\\' . APP_NAME . '\\controller\\' . CONTROLLER_NAME . 'Controller';
$action = ACTION_NAME;
if (!class_exists($controller)) {
throw new \Exception("Controller '{$controller}' not found", 404);
}
$obj = new $controller();
if (!method_exists($obj, $action)) {
throw new \Exception("Action '{$controller}::{$action}()' not found", 404);
}
Hook::listen('actionBefore', array($obj, $action));
$obj->{$action}();
Hook::listen('actionAfter', array($obj, $action));
} catch (\Exception $e) {
Hook::listen('appError', array($e));
}
Hook::listen('appEnd');
}
示例4: send
/**
* 发送数据到客户端
* @access protected
* @param mixed $data 要返回的数据
* @param String $type 返回数据格式
* @param bool $return 是否返回数据
* @return void
*/
public static function send($data = '', $type = '', $return = false)
{
$type = strtolower($type ?: self::$type);
$headers = ['json' => 'application/json', 'xml' => 'text/xml', 'html' => 'text/html', 'jsonp' => 'application/javascript', 'script' => 'application/javascript', 'text' => 'text/plain'];
if (!headers_sent() && isset($headers[$type])) {
header('Content-Type:' . $headers[$type] . '; charset=utf-8');
}
$data = $data ?: self::$data;
if (is_callable(self::$tramsform)) {
$data = call_user_func_array(self::$tramsform, [$data]);
} else {
switch ($type) {
case 'json':
// 返回JSON数据格式到客户端 包含状态信息
$data = json_encode($data, JSON_UNESCAPED_UNICODE);
break;
case 'jsonp':
// 返回JSON数据格式到客户端 包含状态信息
$handler = !empty($_GET[Config::get('var_jsonp_handler')]) ? $_GET[Config::get('var_jsonp_handler')] : Config::get('default_jsonp_handler');
$data = $handler . '(' . json_encode($data, JSON_UNESCAPED_UNICODE) . ');';
break;
case '':
// 类型为空不做处理
break;
default:
// 用于扩展其他返回格式数据
APP_HOOK && Hook::listen('return_data', $data);
}
}
if ($return) {
return $data;
}
echo $data;
self::isExit() && exit;
}
示例5: display
/**
* 显示视图
* @param null $tplFile 模板文件
* @param int $cacheTime 缓存时间
* @param null $cachePath 缓存目录
* @param string $contentType 文件类型
* @param bool $show 是否显示
* @return mixed
*/
protected function display($tplFile = null, $cacheTime = -1, $cachePath = null, $contentType = "text/html", $show = true)
{
Hook::listen("VIEW_START");
//执行视图对象中的display同名方法
$status = $this->view->display($tplFile, $cacheTime, $cachePath, $contentType, $show);
Hook::listen("VIEW_END");
return $status;
}
示例6: notifyActionAction
public function notifyActionAction()
{
$params = array('payment_agent' => 'alipay', 'method' => 'notify_action', 'data' => $this->input);
try {
Hook::listen('process_payment', $event = new EventData($params));
if ($event->getData('result/0/error_code')) {
throw new Exception();
}
//$this->_ajaxReturn('success','200','EVAL');
echo "success";
} catch (Exception $e) {
echo "fail";
}
}
示例7: Login
public function Login()
{
if (IS_POST) {
if ($this->db->login()) {
} else {
$this->error($this->db->error);
}
//插件监听
Hook::listen('ADMIN_LOGIN_SUCCESS');
go("Index/index");
} else {
//登录前监听插件
Hook::listen('ADMIN_LOGIN_START');
$this->display();
}
}
示例8: run
/**
* 运行应用
* @access public
* @reutrn mixed
*/
public static function run()
{
//session处理
session(C("SESSION_OPTIONS"));
//执行应用开始钓子
Hook::listen("APP_INIT");
//执行应用开始钓子
Hook::listen("APP_BEGIN");
//Debug Start
DEBUG and Debug::start("APP_BEGIN");
self::start();
//Debug End
DEBUG and Debug::show("APP_BEGIN", "APP_END");
//日志记录
!DEBUG and C('LOG_RECORD') and Log::save();
//应用结束钓子
Hook::listen("APP_END");
}
示例9: init
private static function init()
{
// 加载应用公共文件和配置
// C(include CONF_PATH . 'config' .CONF_EXT);
// 定义当前请求的系统常量
define('NOW_TIME', $_SERVER['REQUEST_TIME']);
define('REQUEST_METHOD', $_SERVER['REQUEST_METHOD']);
define('IS_GET', REQUEST_METHOD == 'GET' ? true : false);
define('IS_POST', REQUEST_METHOD == 'POST' ? true : false);
define('IS_PUT', REQUEST_METHOD == 'PUT' ? true : false);
define('IS_DELETE', REQUEST_METHOD == 'DELETE' ? true : false);
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ? true : false);
// URL调度
\Core\Dispatcher::run();
// URL调度结束标签
Hook::listen('url_dispatch');
//没有对应的行为函数,返回null notes by lwh 2015-11-19
return;
}
示例10: __construct
public function __construct()
{
//设置字符集
header("Content-type:text/html;charset=" . Config::get('app.charset'));
//时区
date_default_timezone_set(Config::get('app.timezone'));
//路由处理
$this->ParseRoute();
//导入钓子
Hook::import(Config::get('hook'));
//定义常量
$this->DefineConsts();
//应用开始钓子
Hook::listen("app_begin");
$this->ExecuteAction();
//应用结束钩子
Hook::listen("app_end");
//保存日志
Log::save();
}
示例11: run
public static function run()
{
self::_init();
//设置外部路径
//执行应用开始钓子
Hook::listen("APP_INIT");
//执行应用开始钓子
Hook::listen("APP_BEGIN");
set_error_handler(array(__CLASS__, 'error'));
//接受php普通错误
register_shutdown_function(array(__CLASS__, 'fatal_error'));
//接受致命错误
self::_user_import();
//加载用户自定义扩展
spl_autoload_register(array(__CLASS__, '_autoload'));
//设置自动载入
self::_create_demo();
//创建一个demo
self::_app_run();
//让应用默认跑起来
//应用结束钓子
Hook::listen("APP_END");
}
示例12: dispatch
/**
* URL调度
* @access public
*
* @param $config
*
* @throws Exception
*/
public static function dispatch($config)
{
if (isset($_GET[$config['var_pathinfo']])) {
// 判断URL里面是否有兼容模式参数
$_SERVER['PATH_INFO'] = $_GET[$config['var_pathinfo']];
unset($_GET[$config['var_pathinfo']]);
} elseif (IS_CLI) {
// CLI模式下 index.php module/controller/action/params/...
$_SERVER['PATH_INFO'] = isset($_SERVER['argv'][1]) ? $_SERVER['argv'][1] : '';
}
// 检测域名部署
if (!IS_CLI && !empty($config['url_domain_deploy'])) {
if ($config['url_domain_rules']) {
Route::domain($config['url_domain_rules']);
}
if ($match = Route::checkDomain()) {
!defined('BIND_MODULE') && !empty($match[0]) && define('BIND_MODULE', $match[0]);
!defined('BIND_CONTROLLER') && !empty($match[1]) && define('BIND_CONTROLLER', $match[1]);
!defined('BIND_ACTION') && !empty($match[2]) && define('BIND_ACTION', $match[2]);
}
}
// 监听path_info
APP_HOOK && Hook::listen('path_info');
// 分析PATHINFO信息
if (!isset($_SERVER['PATH_INFO'])) {
foreach ($config['pathinfo_fetch'] as $type) {
if (!empty($_SERVER[$type])) {
$_SERVER['PATH_INFO'] = 0 === strpos($_SERVER[$type], $_SERVER['SCRIPT_NAME']) ? substr($_SERVER[$type], strlen($_SERVER['SCRIPT_NAME'])) : $_SERVER[$type];
break;
}
}
}
// [模块,控制器,操作]
$result = [null, null, null];
if (empty($_SERVER['PATH_INFO'])) {
$_SERVER['PATH_INFO'] = '';
define('__INFO__', '');
define('__EXT__', '');
} else {
$_SERVER['PATH_INFO'] = trim($_SERVER['PATH_INFO'], '/');
define('__INFO__', $_SERVER['PATH_INFO']);
// URL后缀
define('__EXT__', strtolower(pathinfo($_SERVER['PATH_INFO'], PATHINFO_EXTENSION)));
if (__INFO__) {
if ($config['url_deny_suffix'] && preg_match('/\\.(' . $config['url_deny_suffix'] . ')$/i', __INFO__)) {
throw new Exception('url suffix deny');
}
// 去除URL后缀
$_SERVER['PATH_INFO'] = preg_replace($config['url_html_suffix'] ? '/\\.(' . trim($config['url_html_suffix'], '.') . ')$/i' : '/\\.' . __EXT__ . '$/i', '', __INFO__);
$depr = $config['pathinfo_depr'];
// 还原劫持后真实pathinfo
$path_info = (defined('BIND_MODULE') ? BIND_MODULE . $depr : '') . (defined('BIND_CONTROLLER') ? BIND_CONTROLLER . $depr : '') . (defined('BIND_ACTION') ? BIND_ACTION . $depr : '') . $_SERVER['PATH_INFO'];
// 路由检测
if (!empty($config['url_route_on'])) {
// 开启路由 则检测路由配置
Route::register(!empty($config['route']) ? $config['route'] : null);
$result = Route::check($path_info, $depr);
if (false === $result) {
// 路由无效
if ($config['url_route_must']) {
throw new Exception('route not define ');
} else {
// 继续分析URL
$result = Route::parseUrl($path_info, $depr);
}
}
} else {
// 分析URL地址
$result = Route::parseUrl($path_info, $depr);
}
}
}
if (APP_MULTI_MODULE) {
$module = strtolower($result[0] ?: $config['default_module']);
if ($maps = $config['url_module_map']) {
if (isset($maps[$module])) {
// 记录当前别名
define('MODULE_ALIAS', $module);
// 获取实际的项目名
$module = $maps[MODULE_ALIAS];
} elseif (array_search($module, $maps)) {
// 禁止访问原始项目
$module = '';
}
}
// 获取模块名称
define('MODULE_NAME', defined('BIND_MODULE') ? BIND_MODULE : strip_tags($module));
// 模块初始化
if (MODULE_NAME && !in_array(MODULE_NAME, $config['deny_module_list']) && is_dir(APP_PATH . MODULE_NAME)) {
APP_HOOK && Hook::listen('app_begin');
define('MODULE_PATH', APP_PATH . MODULE_NAME . DS);
define('VIEW_PATH', MODULE_PATH . VIEW_LAYER . DS);
//.........这里部分代码省略.........
示例13: compiler
/**
* 编译模板文件内容
* @access protected
* @param mixed $tmplContent 模板内容
* @return string
*/
protected function compiler($tmplContent)
{
//模板解析
$tmplContent = $this->parse($tmplContent);
// 还原被替换的Literal标签
$tmplContent = preg_replace_callback('/<!--###literal(\\d+)###-->/is', array($this, 'restoreLiteral'), $tmplContent);
// 添加安全代码
$tmplContent = '<?php if (!defined(\'THINK_PATH\')) exit();?>' . $tmplContent;
// 优化生成的php代码
$tmplContent = str_replace('?><?php', '', $tmplContent);
// 模版编译过滤标签
Hook::listen('template_filter', $tmplContent);
return strip_whitespace($tmplContent);
}
示例14: fetch
public function fetch($templateFile = '', $content = '', $prefix = '')
{
if (empty($content)) {
$templateFile = $this->parseTemplate($templateFile);
if (!is_file($templateFile)) {
E(L('_TEMPLATE_NOT_EXIST_') . ':' . $templateFile);
}
} else {
defined('THEME_PATH') or define('THEME_PATH', $this->getThemePath());
}
ob_start();
ob_implicit_flush(0);
if ('php' == strtolower(C('TMPL_ENGINE_TYPE'))) {
$_content = $content;
extract($this->tVar, EXTR_OVERWRITE);
empty($_content) ? include $templateFile : eval('?>' . $_content);
} else {
$params = array('var' => $this->tVar, 'file' => $templateFile, 'content' => $content, 'prefix' => $prefix);
Hook::listen('view_parse', $params);
}
$content = ob_get_clean();
Hook::listen('view_filter', $content);
return $content;
}
示例15: run
/**
* 运行应用实例 入口文件使用的快捷方法
* @access public
* @return void
*/
public static function run()
{
// 应用初始化标签
Hook::listen('app_init');
App::init();
// 应用开始标签
Hook::listen('app_begin');
// Session初始化
if (!IS_CLI) {
session(C('SESSION_OPTIONS'));
}
// 记录应用初始化时间
G('initTime');
App::exec();
// 应用结束标签
Hook::listen('app_end');
return;
}