本文整理匯總了PHP中think\Debug::throw_exception方法的典型用法代碼示例。如果您正苦於以下問題:PHP Debug::throw_exception方法的具體用法?PHP Debug::throw_exception怎麽用?PHP Debug::throw_exception使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類think\Debug
的用法示例。
在下文中一共展示了Debug::throw_exception方法的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: connect
/**
* 連接數據庫方法
* @access public
* @throws ThinkExecption
*/
public function connect($config = '', $linkNum = 0, $force = false)
{
if (!isset($this->linkID[$linkNum])) {
if (empty($config)) {
$config = $this->config;
}
// 處理不帶端口號的socket連接情況
$host = $config['hostname'] . ($config['hostport'] ? ":{$config['hostport']}" : '');
// 是否長連接
$pconnect = !empty($config['params']['persist']) ? $config['params']['persist'] : $this->pconnect;
if ($pconnect) {
$this->linkID[$linkNum] = mysql_pconnect($host, $config['username'], $config['password'], 131072);
} else {
$this->linkID[$linkNum] = mysql_connect($host, $config['username'], $config['password'], true, 131072);
}
if (!$this->linkID[$linkNum] || !empty($config['database']) && !mysql_select_db($config['database'], $this->linkID[$linkNum])) {
Debug::throw_exception(mysql_error());
}
$dbVersion = mysql_get_server_info($this->linkID[$linkNum]);
//使用UTF8存取數據庫
mysql_query("SET NAMES '" . C('DB_CHARSET') . "'", $this->linkID[$linkNum]);
//設置 sql_model
if ($dbVersion > '5.0.1') {
mysql_query("SET sql_mode=''", $this->linkID[$linkNum]);
}
// 標記連接成功
$this->connected = true;
// 注銷數據庫連接配置信息
if (1 != C('DB_DEPLOY_TYPE')) {
unset($this->config);
}
}
return $this->linkID[$linkNum];
}
示例2: run
public function run(&$content)
{
if (C('HTML_CACHE_ON') && defined('HTML_FILE_NAME')) {
//靜態文件寫入
// 如果開啟HTML功能 檢查並重寫HTML文件
// 沒有模版的操作不生成靜態文件
if (!is_dir(dirname(HTML_FILE_NAME))) {
mkdir(dirname(HTML_FILE_NAME), 0755, true);
}
if (false === file_put_contents(HTML_FILE_NAME, $content)) {
Debug::throw_exception(L('_CACHE_WRITE_ERROR_') . ':' . HTML_FILE_NAME);
}
}
}
示例3: C
/**
* 重寫C方法,改為引用Config方法
*
* @param string $name
*/
function C($name = null, $value = null)
{
// 無參數時獲取所有
if (empty($name)) {
return Config::getAll();
}
// 字符串,為空則獲取
if (is_string($name) && is_null($value)) {
return Config::get($name);
}
// 字符串,不為空則單個設置
if (is_string($name) && !is_null($value)) {
return Config::set($name, $value);
}
// 數組設置
if (is_array($name)) {
return Config::setAll($name);
}
// 避免非法參數
Debug::throw_exception('C funtion error!');
}
示例4: parseTemplateFile
/**
* 自動定位模板文件
* @access private
* @param string $templateFile 文件名
* @return string
*/
private function parseTemplateFile($templateFile)
{
if ('' == $templateFile) {
// 如果模板文件名為空 按照默認規則定位
$templateFile = C('TEMPLATE_NAME');
} elseif (false === strpos($templateFile, C('TMPL_TEMPLATE_SUFFIX'))) {
// 解析規則為 模板主題:模塊:操作 不支持 跨項目和跨分組調用
$path = explode(':', $templateFile);
$action = array_pop($path);
$module = !empty($path) ? array_pop($path) : CONTROLLER_NAME;
if (!empty($path)) {
// 設置模板主題
$path = dirname(THEME_PATH) . '/' . array_pop($path) . '/';
} else {
$path = THEME_PATH;
}
$templateFile = $path . $module . C('TMPL_FILE_DEPR') . $action . C('TMPL_TEMPLATE_SUFFIX');
}
if (!File::exists_case($templateFile)) {
Debug::throw_exception(L('_TEMPLATE_NOT_EXIST_') . '[' . $templateFile . ']');
}
return $templateFile;
}
示例5: __call
/**
* 魔術方法 有不存在的操作的時候執行
*
* @param string $method
* @param array $args
* @return mixed
*/
public function __call($method, $args)
{
if (0 === strcasecmp($method, ACTION_NAME . C('ACTION_SUFFIX'))) {
if (method_exists($this, '_empty')) {
// 如果定義了_empty操作 則調用
$this->_empty($method, $args);
} elseif (File::exists_case(C('TEMPLATE_NAME'))) {
// 檢查是否存在默認模版 如果有直接輸出模版
$this->display();
} elseif (function_exists('__hack_action')) {
// hack 方式定義擴展操作
__hack_action();
} else {
Debug::output(new Exception("Controller method 無效,\"" . ACTION_NAME . "\""));
}
} else {
switch (strtolower($method)) {
// 判斷提交方式
case 'ispost':
case 'isget':
case 'ishead':
case 'isdelete':
case 'isput':
return strtolower($_SERVER['REQUEST_METHOD']) == strtolower(substr($method, 2));
// 獲取變量 支持過濾和默認值 調用方式 $this->_post($key,$filter,$default);
// 獲取變量 支持過濾和默認值 調用方式 $this->_post($key,$filter,$default);
case '_get':
$input =& $_GET;
break;
case '_post':
$input =& $_POST;
break;
case '_put':
parse_str(file_get_contents('php://input'), $input);
break;
case '_param':
switch ($_SERVER['REQUEST_METHOD']) {
case 'POST':
$input = $_POST;
break;
case 'PUT':
parse_str(file_get_contents('php://input'), $input);
break;
default:
$input = $_GET;
}
if (C('VAR_URL_PARAMS')) {
$params = $_GET[C('VAR_URL_PARAMS')];
$input = array_merge($input, $params);
}
break;
case '_request':
$input =& $_REQUEST;
break;
case '_session':
$input =& $_SESSION;
break;
case '_cookie':
$input =& $_COOKIE;
break;
case '_server':
$input =& $_SERVER;
break;
case '_globals':
$input =& $GLOBALS;
break;
default:
Debug::throw_exception(__CLASS__ . ':' . $method . L('_METHOD_NOT_EXIST_'));
}
if (!isset($args[0])) {
// 獲取全局變量
$data = $input;
// 由VAR_FILTERS配置進行過濾
} elseif (isset($input[$args[0]])) {
// 取值操作
$data = $input[$args[0]];
$filters = isset($args[1]) ? $args[1] : C('DEFAULT_FILTER');
if ($filters) {
// 2012/3/23 增加多方法過濾支持
$filters = explode(',', $filters);
foreach ($filters as $filter) {
if (function_exists($filter)) {
$data = is_array($data) ? array_map($filter, $data) : $filter($data);
// 參數過濾
}
}
}
} else {
// 變量默認值
$data = isset($args[2]) ? $args[2] : NULL;
}
return $data;
}
//.........這裏部分代碼省略.........
示例6: parseWhereItem
protected function parseWhereItem($key, $val)
{
$whereStr = '';
if (is_array($val)) {
if (is_string($val[0])) {
if (preg_match('/^(EQ|NEQ|GT|EGT|LT|ELT)$/i', $val[0])) {
// 比較運算
$whereStr .= $key . ' ' . $this->comparison[strtolower($val[0])] . ' ' . $this->parseValue($val[1]);
} elseif (preg_match('/^(NOTLIKE|LIKE)$/i', $val[0])) {
// 模糊查找
if (is_array($val[1])) {
$likeLogic = isset($val[2]) ? strtoupper($val[2]) : 'OR';
if (in_array($likeLogic, array('AND', 'OR', 'XOR'))) {
$likeStr = $this->comparison[strtolower($val[0])];
$like = array();
foreach ($val[1] as $item) {
$like[] = $key . ' ' . $likeStr . ' ' . $this->parseValue($item);
}
$whereStr .= '(' . implode(' ' . $likeLogic . ' ', $like) . ')';
}
} else {
$whereStr .= $key . ' ' . $this->comparison[strtolower($val[0])] . ' ' . $this->parseValue($val[1]);
}
} elseif ('exp' == strtolower($val[0])) {
// 使用表達式
$whereStr .= ' (' . $key . ' ' . $val[1] . ') ';
} elseif (preg_match('/IN/i', $val[0])) {
// IN 運算
if (isset($val[2]) && 'exp' == $val[2]) {
$whereStr .= $key . ' ' . strtoupper($val[0]) . ' ' . $val[1];
} else {
if (is_string($val[1])) {
$val[1] = explode(',', $val[1]);
}
$zone = implode(',', $this->parseValue($val[1]));
$whereStr .= $key . ' ' . strtoupper($val[0]) . ' (' . $zone . ')';
}
} elseif (preg_match('/BETWEEN/i', $val[0])) {
// BETWEEN運算
$data = is_string($val[1]) ? explode(',', $val[1]) : $val[1];
$whereStr .= ' (' . $key . ' ' . strtoupper($val[0]) . ' ' . $this->parseValue($data[0]) . ' AND ' . $this->parseValue($data[1]) . ' )';
} else {
Debug::throw_exception(L('_EXPRESS_ERROR_') . ':' . $val[0]);
}
} else {
$count = count($val);
$rule = isset($val[$count - 1]) ? strtoupper($val[$count - 1]) : '';
if (in_array($rule, array('AND', 'OR', 'XOR'))) {
$count = $count - 1;
} else {
$rule = 'AND';
}
for ($i = 0; $i < $count; $i++) {
$data = is_array($val[$i]) ? $val[$i][1] : $val[$i];
if ('exp' == strtolower($val[$i][0])) {
$whereStr .= '(' . $key . ' ' . $data . ') ' . $rule . ' ';
} else {
$op = is_array($val[$i]) ? $this->comparison[strtolower($val[$i][0])] : '=';
$whereStr .= '(' . $key . ' ' . $op . ' ' . $this->parseValue($data) . ') ' . $rule . ' ';
}
}
$whereStr = substr($whereStr, 0, -4);
}
} else {
//對字符串類型字段采用模糊匹配
if (C('DB_LIKE_FIELDS') && preg_match('/(' . C('DB_LIKE_FIELDS') . ')/i', $key)) {
$val = '%' . $val . '%';
$whereStr .= $key . ' LIKE ' . $this->parseValue($val);
} else {
$whereStr .= $key . ' = ' . $this->parseValue($val);
}
}
return $whereStr;
}
示例7: exec
/**
* 執行controller->action
*
* @return void
*/
public static function exec()
{
// Controller name 安全過濾
if (!preg_match('/^[A-Za-z](\\w)*$/', CONTROLLER_NAME)) {
$module = false;
} else {
$module = Import::controller(GROUP_NAME, CONTROLLER_NAME);
}
// 執行空控製器
try {
if (!$module) {
$module = Import::controller(GROUP_NAME, 'Empty');
if (!$module) {
throw new Exception("Controller不存在,\"" . CONTROLLER_NAME . "\"");
}
}
} catch (Exception $error) {
Debug::output($error);
}
// 獲取控製器操作名
$action = ACTION_NAME;
// 定義模板名稱
Config::set('TEMPLATE_NAME', THEME_PATH . CONTROLLER_NAME . '/' . $action . '.html');
try {
// Action name 安全過濾
if (!preg_match('/^[A-Za-z](\\w)*$/', $action)) {
throw new ReflectionException();
}
// 對當前控製器的方法執行操作映射
$method = new ReflectionMethod($module, $action);
// public方法
if ($method->isPublic()) {
// 映射執行
$class = new ReflectionClass($module);
// 前置操作
if ($class->hasMethod('_before_' . $action)) {
$before = $class->getMethod('_before_' . $action);
// public並執行
if ($before->isPublic()) {
$before->invoke($module);
}
}
// URL參數綁定檢測
if (Config::get('URL_PARAMS_BIND') && $method->getNumberOfParameters() > 0) {
switch ($_SERVER['REQUEST_METHOD']) {
case 'POST':
$vars = $_POST;
break;
case 'PUT':
parse_str(file_get_contents('php://input'), $vars);
break;
default:
$vars = $_GET;
}
$params = $method->getParameters();
foreach ($params as $param) {
$name = $param->getName();
if (isset($vars[$name])) {
$args[] = $vars[$name];
} elseif ($param->isDefaultValueAvailable()) {
$args[] = $param->getDefaultValue();
} else {
Debug::throw_exception(L('_PARAM_ERROR_') . ':' . $name);
}
}
$method->invokeArgs($module, $args);
} else {
$method->invoke($module);
}
// 後置操作
if ($class->hasMethod('_after_' . $action)) {
$after = $class->getMethod('_after_' . $action);
// public並執行
if ($after->isPublic()) {
$after->invoke($module);
}
}
} else {
throw new ReflectionException();
}
} catch (ReflectionException $e) {
// 方法調用發生異常後 引導到__call方法處理
$method = new ReflectionMethod($module, '__call');
$method->invokeArgs($module, array($action, ''));
}
}