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

                ###### TP執行流程詳解 #### TP執行流程 我查看了TP的核心源碼,下面是我對TP執行的一些理解(從入口開始,只是一個大概流程): 1. 入口文件: 單入口文件,里面包含TP的入口文件,``require './ThinkPHP/ThinkPHP.php'; 有多個模塊的話也可以定義多個入口,(比如對于后臺模塊,再新建一個admin.php) 2.TP入口文件ThinkPHP.php 1. 記錄運行時間(鉤子),用于輸出日志和調試,個人認為沒什么用......... 2. 定義系統常量:URL模式、類文件后綴、當前文件目錄、系統運行目錄、是否調試模式、緩存目錄、模版目錄、配置文件目錄....等等,然后引入核心Think類``Think.class.php`` ,引入后執行這個類中的start函數 3.Think.class.php類以及start函數 1.在start函數中,先定義注冊函數,然后定義錯誤和異常處理函數(spl_autoload_register用于自動加載未加載的類,register_shutdown_function定義PHP程序執行完成后執行的函數,set_exception_handler是自定義異常處理函數,這三個函數的參數都是一個方法名,當自動加載、執行完成、出現異常的時候,將用這里面傳的方法參數代替php原本的處理機制,比如 set_exception_handler('Think\Think::appException'); 出現異常的時候會調用appException函數,而不是PHP原生的異常處理函數) 2.加載各種文件:核心文件、配置文件、模式別名定義、模式行為定義等 3.設置系統時區 4.調用App類中的run方法 5.這個類中的其他函數就是在第一步中說到的自定義加載、處理函數,(自定義加載中用到了類名映射,就是從當前url中解析出模塊名、控制器名、方法名,) 4.App類以及run函數 1.run函數中先執行監聽(鉤子類中的)函數監聽init方法 2.執行init方法(加載動態配置、安全過濾等); 3.再執行鉤子類監聽函數,監聽begin方法,設置session,獲得到應用執行時間 4.執行exec函數(去尋找從url中解析出的類,并將其實例化后調用方法,輸出結果) 5.執行監聽函數監聽end函數(應用結束); 這樣整個執行流程就完畢了 ,我看了好幾天...挺難懂的,而且我覺得TP中要動態加載的類太多了,對于中小型網站來說,用不上,反而影響運行速度,然后我把這個執行流程里面比較重要的部分挑出來,寫進了我的框架中,里面的大部分函數名與TP相同,但是完全是我自己用代碼實現的,并沒有用TP的思路。下一章會詳細講解我自己理解的MVC框架及思路。
                  <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>

                              哎呀哎呀视频在线观看