本文整理匯總了PHP中Q::loadClassFile方法的典型用法代碼示例。如果您正苦於以下問題:PHP Q::loadClassFile方法的具體用法?PHP Q::loadClassFile怎麽用?PHP Q::loadClassFile使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Q
的用法示例。
在下文中一共展示了Q::loadClassFile方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: run
/**
* 根據運行時上下文對象,調用相應的控製器動作方法
*
* @param array $args
*
* @return mixed
*/
function run(array $args = array())
{
$context = QContext::instance();
$udi = $context->requestUDI('array');
$dir = dirname(__FILE__) . '/app/controller';
$class_name = 'controller_';
$controller_name = strtolower($udi[QContext::UDI_CONTROLLER]);
$class_name .= $controller_name;
$filename = "{$controller_name}_controller.php";
// 載入控製器文件
if (!class_exists($class_name, false)) {
Q::loadClassFile($filename, array($dir), $class_name);
}
// 構造控製器對象
$controller = new $class_name($this);
$action_name = $udi[QContext::UDI_ACTION];
$response = $controller->execute($action_name, $args);
if (is_object($response) && method_exists($response, 'execute')) {
// 如果返回結果是一個對象,並且該對象有 execute() 方法,則調用
$response = $response->execute();
} elseif ($response instanceof QController_Forward) {
// 如果是一個 QController_Forward 對象,則將請求進行轉發
$response = $this->run($response->args);
}
// 其他情況則返回執行結果
return $response;
}
示例2: dispatching
/**
* 根據運行時上下文對象,調用相應的控製器動作方法
*
* @param array $args
*
* @return mixed
*/
function dispatching(array $args = array())
{
// 構造運行時上下文對象
$context = QContext::instance();
// 獲得請求對應的 UDI(統一目的地信息)
$udi = $context->requestUDI('array');
#IFDEF DEBUG
QLog::log('REQUEST UDI: ' . $context->UDIString($udi), QLog::DEBUG);
#ENDIF
// 檢查是否有權限訪問
if (!$this->authorizedUDI($this->currentUserRoles(), $udi)) {
// 拒絕訪問
$response = $this->_on_access_denied();
} else {
// 確定控製器的類名稱
// 控製器類名稱 = 模塊名_Controller_名字空間_控製器名
$module_name = $udi[QContext::UDI_MODULE];
if ($module_name != QContext::UDI_DEFAULT_MODULE && $module_name) {
$dir = "{$this->_app_config['MODULE_DIR']}/{$module_name}/controller";
$class_name = "{$module_name}_controller_";
} else {
$dir = "{$this->_app_config['APP_DIR']}/controller";
$class_name = 'controller_';
}
$ns = $udi[QContext::UDI_NAMESPACE];
if ($ns != QContext::UDI_DEFAULT_NAMESPACE && $ns) {
$class_name .= "{$ns}_";
$dir .= "/{$ns}";
}
$controller_name = $udi[QContext::UDI_CONTROLLER];
$class_name .= $controller_name;
$filename = "{$controller_name}_controller.php";
do {
// 載入控製器文件
try {
if (!class_exists($class_name, false)) {
Q::loadClassFile($filename, array($dir), $class_name);
}
} catch (Q_ClassNotDefinedException $ex) {
$response = $this->_on_action_not_defined();
break;
} catch (Q_FileNotFoundException $ex) {
$response = $this->_on_action_not_defined();
break;
}
// 構造控製器對象
$controller = new $class_name($this);
$action_name = $udi[QContext::UDI_ACTION];
if ($controller->existsAction($action_name)) {
// 如果指定動作存在,則調用
$response = $controller->execute($action_name, $args);
} else {
// 如果指定動作不存在,則嘗試調用控製器的 _on_action_not_defined() 函數處理錯誤
$response = $controller->_on_action_not_defined($action_name);
if (is_null($response)) {
// 如果控製器的 _on_action_not_defined() 函數沒有返回處理結果
// 則由應用程序對象的 _on_action_not_defined() 函數處理
$response = $this->_on_action_not_defined();
}
}
} while (false);
}
if (is_object($response) && method_exists($response, 'execute')) {
// 如果返回結果是一個對象,並且該對象有 execute() 方法,則調用
$response = $response->execute();
} elseif ($response instanceof QController_Forward) {
// 如果是一個 QController_Forward 對象,則將請求進行轉發
$response = $this->dispatching($response->args);
}
// 其他情況則返回執行結果
return $response;
}
示例3: dispatching
/**
* 根據運行時上下文對象,調用相應的控製器動作方法
*
* @param array $args
*
* @return mixed
*/
function dispatching(array $args = array())
{
header("Content-type: text/html; charset=utf-8");
// 從 session 中提取 flash message
if (isset($_SESSION)) {
$message = isset($_SESSION[$this->_flash_message_key]) ? $_SESSION[$this->_flash_message_key] : null;
$this->_flash_message = $message;
unset($_SESSION[$this->_flash_message_key]);
}
// 構造運行時上下文對象
$context = QContext::instance();
// 獲得請求對應的 UDI(統一目的地信息)
$udi = $context->requestUDI('array');
#dump($udi);
#IFDEF DEBUG
QLog::log('REQUEST UDI: ' . $context->UDIString($udi), QLog::DEBUG);
#ENDIF
// 檢查是否有權限訪問
if (false) {
// 拒絕訪問
$response = $this->_on_access_denied();
} else {
// 確定控製器的類名稱
$module_name = $udi[QContext::UDI_MODULE];
$controller_name = $udi[QContext::UDI_CONTROLLER];
$dir = "{$this->_app_config['APP_DIR']}/controller/{$module_name}";
$class_name = sprintf("Controller_%s_%s", ucwords($module_name), ucwords($controller_name));
$filename = "{$controller_name}_controller.php";
do {
if (!class_exists($class_name, false)) {
Q::loadClassFile($filename, array($dir), $class_name);
}
// 構造控製器對象
$controller = new $class_name($this);
$action_name = $udi[QContext::UDI_ACTION];
if ($controller->existsAction($action_name)) {
// 如果指定動作存在,則調用
$response = $controller->execute($action_name, $args);
// 更新 flash message
} else {
// 如果指定動作不存在,則嘗試調用控製器的 _on_action_not_defined() 函數處理錯誤
$response = $controller->_on_action_not_defined($action_name);
if (is_null($response)) {
// 如果控製器的 _on_action_not_defined() 函數沒有返回處理結果
// 則由應用程序對象的 _on_action_not_defined() 函數處理
$response = $this->_on_action_not_defined();
}
}
} while (false);
}
if (is_object($response) && method_exists($response, 'execute')) {
// 如果返回結果是一個對象,並且該對象有 execute() 方法,則調用
$response = $response->execute();
} elseif ($response instanceof QController_Forward) {
// 更新 flash message
if (isset($_SESSION)) {
unset($_SESSION[$this->_flash_message_key]);
}
// 如果是一個 QController_Forward 對象,則將請求進行轉發
$response = $this->dispatching($response->args);
}
// 其他情況則返回執行結果
return $response;
}
示例4: QView_Exception
*
* @{
*/
// {{{ includes
do {
if (class_exists('Smarty', false)) {
break;
}
$view_config = (array) Q::getIni('view_config');
if (empty($view_config['smarty_dir']) && !defined('SMARTY_DIR')) {
throw new QView_Exception(__('Application settings "view_config[\'smarty_dir\']" ' . 'and constant SMARTY_DIR must be defined for QView_Adapter_Smarty.'));
}
if (empty($view_config['smarty_dir'])) {
$view_config['smarty_dir'] = SMARTY_DIR;
}
Q::loadClassFile('Smarty.class.php', $view_config['smarty_dir'], 'Smarty');
} while (false);
// }}}
/**
* QView_Adapter_Smarty 提供了對 Smarty 模板引擎的支持
*/
class QView_Adapter_Smarty extends QView_Adapter_Abstract
{
public $tpl_file_ext = '.html';
/**
* Smarty 對象
*
* @var Smarty
*/
public $smarty;
function __construct(QContext $context)
示例5: _executeAction
/**
* 執行指定的 Action 方法
*
* @param QContext $context
* @param array $args
*
* @return mixed
*/
protected function _executeAction(QContext $context, array $args = array())
{
// 檢查是否有權限訪問
$controller_name = $context->controller_name;
$action_name = $context->action_name;
$namespace = $context->namespace;
$module = $context->module_name;
QLog::log(sprintf('Execute controller action: "%s".', $context->getRequestUDI()));
if (!$this->checkAuthorized($controller_name, $action_name, $namespace, $module)) {
$response = call_user_func($context->getIni('dispatcher_on_access_denied'), $context);
} else {
// 嘗試載入控製器
$class_name = $context->getIni('controller_class_prefix') . 'Controller_';
if ($namespace) {
$class_name .= ucfirst($namespace) . '_';
}
$class_name .= ucfirst(str_replace('_', '', $controller_name));
$app_config = self::getAppConfig($this->_appid);
if ($module) {
$dir = $app_config['ROOT_DIR'] . "/modules/{$module}/controller";
} else {
$dir = $app_config['ROOT_DIR'] . "/app/controller";
}
if ($namespace) {
$dir .= DS . $namespace;
}
// 構造控製器對象
try {
$filename = $controller_name . '_controller.php';
Q::loadClassFile($filename, array($dir), $class_name);
} catch (QException $ex) {
$response = call_user_func($this->context->getIni('dispatcher_on_action_not_found'), $context);
if (is_null($response)) {
$response = '';
}
}
if (!isset($response)) {
$controller = new $class_name($this, $context);
/* @var $controller QController_Abstract */
if ($context->isAJAX()) {
$controller->view = null;
}
$response = $controller->_execute($args);
}
}
if (is_object($response) && method_exists($response, 'execute')) {
$response = $response->execute();
} elseif ($response instanceof QController_Forward) {
// 更新 flash message
$key = $this->context->getIni('app_flash_message_key');
unset($_SESSION[$key]);
$response = $this->_executeAction($response->context, $response->args);
}
return $response;
}