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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                殊途同歸 http://127.0.0.1/thinkphp5/public http://127.0.0.1/thinkphp5/public/index.php http://127.0.0.1/thinkphp5/public/index.php/index http://127.0.0.1/thinkphp5/public/index.php/index/Index http://127.0.0.1/thinkphp5/public/index.php/index/Index/index 上述五種不同的URL之所以訪問結果全部相同,是由于他們本身就是相同的。 原因是:默認值! apache的默認值 我們在前面討論過,當我們不指定文件名的時候,會先找index.html,然后再找index.php,這個是在apache中設置的,也就是apache在起這個作用。 thinkphp的默認值 在thinkphp中,是通過“入口文件/模塊名(module)/控制器名(controller)/觸發器名(action)”來確定用戶的URL對應執行哪個方法中的語句的。如下圖所示: 比如我們進行如下訪問:![](https://box.kancloud.cn/5eefb2108704ee22a9b017c46e27ef6d_629x456.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/46f42da640597279949bcbaff80caef4_1307x671.png) 模塊:module,控制器:controller,觸發器:action。以后我們會越來越多的和它們打交道,每一個URL都會對應著一個觸發器,我們有必要多花些精力把MCA弄明白。 當我們未指定模塊名時,調用的是默認模塊index。 當我們未指定控制器名時,調用的是默認控制器Index(注意,這個是Index,而不是index,原因是控制器實際上是一個類,我們規定類的名字首寫字母要大寫)。 當我們在URL中未指定觸發器名時,調用的是默認觸發器index。 程序員思維就是這樣,能用統一的 "index"變量(文件名等…)的時候,他們就懶得用其它變量……; 但其實 MCA這里面的概念好多啊? 一會兒模塊名、一會兒控制器名、一會兒觸發器名(函數名)……整這么多?!還都起名叫“index”……簡直讓初學者暈死去。 好吧,讓我來拯救初學者……咱們把所有的名字都區分開! 比如: Module模塊名咱就叫: module1name1、module2name2、module3name3等……; Controller控制器名咱就叫: controller2name2、controller4name4……等; Action(觸發器)名咱就叫: action3functionName3, action6fuctionName6等等…… 起名字嗎……咱就講究“誰也不影響誰”(俗稱:天上一手地下一腳、十三不靠) 再看一下,重命名以后的 Thinkphp(部署:目錄、文件、類、函數)架構吧: ![](https://box.kancloud.cn/5a4527fb5647a3a44cac854814d835ee_913x693.png) MCA 是的,沒有什么深奧的道理。 M = Module 它對應一個文件夾(可以稱為:“模塊”) C = Controller 它對應一個文件(可以稱為:控制器、或稱為“類名字”) A = Action 它對應一個方法(它還有幾個名字:觸發器、函數、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不同、語句執行結果卻相同的情況。 其它代碼
                  <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>

                              哎呀哎呀视频在线观看