當前位置: 首頁>>代碼示例>>PHP>>正文


PHP Q::loadClassFile方法代碼示例

本文整理匯總了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;
 }
開發者ID:Debenson,項目名稱:openwan,代碼行數:34,代碼來源:run.php

示例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;
 }
開發者ID:BGCX262,項目名稱:zys-todo-svn-to-git,代碼行數:79,代碼來源:myapp.php

示例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;
 }
開發者ID:xyz12810,項目名稱:xiao3vpn,代碼行數:71,代碼來源:myapp.php

示例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)
開發者ID:fchaose,項目名稱:qeephp,代碼行數:31,代碼來源:smarty.php

示例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;
 }
開發者ID:fchaose,項目名稱:qeephp,代碼行數:63,代碼來源:abstract.php


注:本文中的Q::loadClassFile方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。