<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] * * * * * ## 1 控制器基類文件分析(thinkphp/library/think/Controller.php) ~~~ protected $view = null; protected $beforeActionList = []; ~~~ ~~~ public function __construct() { $this->view = \think\View::instance(Config::get()); if (method_exists($this, '_initialize')) { $this->_initialize(); } if ($this->beforeActionList) { foreach ($this->beforeActionList as $method => $options) { is_numeric($method) ? $this->beforeAction($options) : $this->beforeAction($method, $options); } } } ~~~ ~~~ protected function beforeAction($method, $options = []) { if (isset($options['only'])) { if (is_string($options['only'])) { $options['only'] = explode(',', $options['only']); } if (!in_array(ACTION_NAME, $options['only'])) { return; } } elseif (isset($options['except'])) { if (is_string($options['except'])) { $options['except'] = explode(',', $options['except']); } if (in_array(ACTION_NAME, $options['except'])) { return; } } if (method_exists($this, $method)) { call_user_func([$this, $method]); } } ~~~ ~~~ public function fetch($template = '', $vars = [], $cache_id = '') { return $this->view->fetch($template, $vars, $cache_id); } public function show($content, $vars = []) { return $this->view->show($content, $vars); } public function assign($name, $value = '') { $this->view->assign($name, $value); } public function engine($engine, $config = []) { $this->view->engine($engine, $config); } ~~~ Controller.php定義了控制的基類操作,大部分是視圖的操作調用 `1 public function __construct(){} ` 構造函數創建視圖對象,并調用控制器實例化方法$this->_initialize(), 最后調用前置操作方法$this->beforeAction() `2 public function fetch($template = '', $vars = [], $cache_id = ''){}` `public function show($content, $vars = []){}` 編譯模板文件并輸出。 `3 public function assign($name, $value = ''){}` 控制器變量傳遞到模板中 `4 public function engine($engine, $config = []){}` 設置視圖的模板渲染引擎 * * * * * ## 2 應用入口分析 應用目錄的入口在App::run()的調度類型的module調度中 其分析思路見 [應用啟動文件](http://www.hmoore.net/zmwtp/tp5/119426)與[應用調度分析](http://www.hmoore.net/zmwtp/tp5/119428)兩節。 訪問localhost/tp5/public/index.php 時。 根據全局配置文件/thinkphp/convention.php中的配置可知 default_module 默認模塊為 index default_controller 默認控制器 Index, default_action 默認操作 index, 因此App::run()的module調度類型中會自動訪問/applicaiton/index模塊 自動加載器的Loader::controller()會自動訪問/application/index模塊的index控制器。 Index控制器在/applicaiton/index/controller的index.php文件 所以最后調用/application/index/controller/index.php文件的index()。 * * * * * ## 3 應用默認目錄(/application/) ~~~ /application /index /controller config.php databse.php route.php ~~~ 其中/index 應用的index模塊 /controller Index模塊下的控制器目錄 config.php 應用的配置文件 databse.php 應用的數據庫配置文件 route.php 應用的路由配置文件 ## 4 應用控制器開發 應用控制器是應用調度的入口文件,通常的開發就是在/application/index/controller目錄下添加控制器,并調用框架模型和視圖等實現業務邏輯。 控制器controller是框架MVC的入口。通常在controller類的方法中調用模型的操作與視圖渲染方法。 模型操作見 數據模型文件 視圖渲染見 視圖渲染文件 其具體開發見 使用范例 [應用控制器操作](http://www.hmoore.net/zmwtp/tp5/119443)。 進一步的可將前臺與后臺進行分模塊開發。模塊開發見 使用范例的[模塊開發](http://www.hmoore.net/zmwtp/tp5/119528)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看