<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>

                # 殊途同歸 http://127.0.0.1/thinkphp5/public <br/> http://127.0.0.1/thinkphp5/public/index.php <br/> http://127.0.0.1/thinkphp5/public/index.php/index <br/> http://127.0.0.1/thinkphp5/public/index.php/index/Index <br/> http://127.0.0.1/thinkphp5/public/index.php/index/Index/index <br/> 上述五種不同的URL之所以訪問結果全部相同,是由于他們本身就是相同的。 原因是:默認值! ### apache的默認值 我們在前面討論過,當我們不指定文件名的時候,會先找index.html,然后再找index.php,這個是在apache中設置的,也就是apache在起這個作用。 ### thinkphp的默認值 在thinkphp中,是通過“入口文件/模塊名(module)/控制器名(controller)/觸發器名(action)”來確定用戶的URL對應執行哪個方法中的語句的。如下圖所示: 比如我們進行如下訪問: ![](https://box.kancloud.cn/2016-07-02_57778c45815d6.png) 按照ThinkPHP的規定,其實是直接執行了```d:/xampp/htdocs/thinkphp5/public/index.php```這個文件(我們把這個文件叫做入口文件),ThinkPHP的開發團隊在這個文件中寫了一些特定的代碼,這些代碼最終自動調用了```d:/xampp/htdocs/thinkphp5/application/index/controller/index.php```中的```index()```方法。 > 至于index.php這件文件是怎么做到調用那個index()方法的,現在我能給出的答案是:自動。其實我們并不需要知道它是怎么調用呢,學會如果使用ThinkPHP才是我們現在的目的。 我們把```application```下面的子文件夾,稱為```模塊(Module)```,把模塊下的```controller```文件夾中的子文件稱之為```控制器(Controller)```,把控制器文件中的方法稱為```觸發器(Action)```。 對于ThinkPHP自動調用的規則,我們用一個比較亂,但卻很能說明問題的圖來說明一下。 ![](https://box.kancloud.cn/2016-07-02_57778a2d19ae8.png) > 模塊:module,控制器:controller,觸發器:action。以后我們會越來越多的和它們打交道,每一個URL都會對應著一個觸發器,我們有必要多花些精力把MCA弄明白。 1. 當我們未指定模塊名時,調用的是默認模塊index。 2. 當我們未指定控制器名時,調用的是默認控制器Index(注意,這個是Index,而不是index,原因是控制器實際上是一個類,我們規定類的名字首寫字母要大寫)。 3. 當我們在URL中未指定觸發器名時,調用的是默認觸發器index。 ### MCA 是的,沒有什么深奧的道理。 <code> M </code> = <code>M</code>odule 它對應一個文件夾 <code> C </code> = <code>C</code>ontroller 它對應一個文件 <code> A </code> = <code>A</code>ction 它對應一個方法(它還有幾個名字:觸發器、函數、function、method) 每個URL都會對應唯一的一組MCA,這組唯一的MCA會執行特定的function。當用戶訪問一個URL時,就會執行一個對應的function,我們把一些代碼寫在這個function中,那么相應的功能就實現了。就像我們前面輸出hello world一樣,是把一些輸出hello world的代碼放到了index模塊下的Index控制器下的 function index()中。 **【注意】**: 我們把這個function又叫做觸發器,而且我們僅將Controller中的function叫做觸發器,原因大概是由于這個function如果想被執行的話,需要用戶輸入特定的URL。我們說當用戶輸入特定的URL后,這個方法被```觸發```了,所以叫做觸發器。 是的,就是這么簡單。 ### apache與thinkphp默認值結合 當apache與thinkphp的默認值相結合時,就出現了上述五種URL不同、語句執行結果卻相同的情況。 ### 其它代碼 ~~~ <?php // 該文件位于application\index\controller文件夾中 namespace app\index\controller; // 我的文件名叫做Index.php,我的名字對應的叫做Index。 class Index { // 我的方法名叫index public function index() { return 'Hello World!'; } } ~~~ ### 小練習 **目標1**:訪問以下地址,要求輸出結果:hello yunzhi。 http://127.0.0.1/thinkphp5/public/index.php/test **目標2**:訪問以下地址,要求輸出結果:hi yunzhier。 http://127.0.0.1/thinkphp5/public/index.php/yunzhi/hi/yunzhier **目標3**:按下圖所示創建文件,訪問該文件并輸出正確結果。 ![](https://box.kancloud.cn/2016-06-13_575dfccdde046.png) ~~~ git checkout -f step2.5 ~~~ 執行上述命令后,本節示例代碼信息如下: 目標1實現代碼: ![](https://box.kancloud.cn/6a46b23c678edeb048cc1a24569dd7bf_670x232.png) 目標2實現代碼: ![](https://box.kancloud.cn/2d700ac1dab8181d16ca559f5bb477c3_688x254.png) 目標3訪問網址為: http://127.0.0.1/thinkphp5/public/index.php/test/hello/luck 或 http://127.0.0.1/thinkphp5/public/test/hello/luck
                  <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>

                              哎呀哎呀视频在线观看