<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之旅 廣告
                #12.項目后臺mvc架構 其實后臺和前臺差不多,在web下也有一個index.php文件,然后也需要隱藏index.php,所以我們直接將.htaccess也拿過來。 ```cpp |-web 后臺 | |-.htaccess 后臺分布式配置文件 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FIELNAME} !-d RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] ``` 然后后臺入口文件和前臺的入口文件內容也差不多,只是引入文件的路徑需要調整。還有就是我們要區分前后臺,根據前后臺定義的變量APP來判斷。前臺入口文件也需要定義 define('APP','app'); ```cpp |-web 后臺 | |-index.php 項目后臺入口文件,單一入口 <?php /** * 項目后臺入口文件 * User: find35.com * Date: 15/12/27 * Time: 下午3:12 */ echo "<meta charset='utf-8'>"; require_once '../core/App.class.php'; //注冊一個 define('APP','web'); spl_autoload_register(array('App','myAutoloader')); try{ App::run(); }catch(MyException $e){ $e->showError(($e->getMessage())); } ``` 然后我們也需要根據入口文件傳遞的APP來調整app.class.php文件里面的路徑。 ```cpp |-core 框架核心目錄 | |-App.class.php URL重寫類 <?php /** * Created by PhpStorm. * User: find35.com * Date: 15/12/25 * Time: 上午10:53 */ class App { protected static $controller = 'Home';//控制器名 protected static $method = 'index';//方法名 protected static $pams = array();//其他參數 /** * url重寫路由的url地址解析方法 */ protected static function paseUrl(){ if(!empty($_GET['url'])){ $url = explode('/',$_GET['url']); //得到控制器 if(isset($url[0])){ self::$controller = $url[0]; unset($url[0]); } //得到方法名 if(isset($url[1])){ self::$method = $url[1]; unset($url[1]); } //判斷是否有其他參數 if(isset($url)){ self::$pams = array_values($url); } } } /** * 項目的入口方法 * @throws Exception */ public static function run(){ self::paseUrl(); //判斷是前臺還是后臺 if(APP == 'app'){ //得到控制器的路徑 $url = 'app/controllers/'.self::$controller.'.class.php'; } if(APP == 'web'){ //得到控制器的路徑 $url = 'controllers/'.self::$controller.'.class.php'; } //判斷控制器文件是否存在 if(file_exists($url)){ $c = new self::$controller; }else{ throw new MyException('控制器不存在'); } //執行方法 if(method_exists($c,self::$method)){ $m = self::$method; $new_pams = array(); $num = count(self::$pams); //傳遞參數,判斷是否有參數 if($num > 0){ //判斷傳遞的參數的數量是否是2的倍數 if($num % 2 == 0){ //將參數進行處理 for($i=0;$i<$num;$i+=2){ $new_pams[self::$pams[$i]] = self::$pams[$i+1]; } }else{ throw new MyException('非法參數!'); } } $c->$m($new_pams); }else{ throw new MyException('方法不存在'); } } /** * 自動加載類方法 * @param $className * @throws Exception */ public static function myAutoloader($className){ if(APP == 'app'){ //控制器類文件目錄 $controller = 'app/controllers/'.$className.'.class.php'; //模型類文件目錄 $model = 'app/models/'.$className.'.class.php'; //核心類文件目錄 $core = 'core/'.$className.'.class.php'; } if(APP == 'web'){ //控制器類文件目錄 $controller = 'controllers/'.$className.'.class.php'; //模型類文件目錄 $model = 'models/'.$className.'.class.php'; //核心類文件目錄 $core = '../core/'.$className.'.class.php'; } if(file_exists($controller)){ require_once $controller; }else if(file_exists($model)){ require_once $model; }else if(file_exists($core)){ require_once $core; }else{ throw new MyException('類文件不存在'); } } } ``` 然后我們也建立一個后臺首頁控制器 ```cpp |-web 后臺 | |-controllers 存放所有的控制器目錄 | |-Home.class.php 后臺首頁控制器 <?php /** * 網站后臺首頁 * User: find35.com * Date: 15/12/27 * Time: 下午3:19 */ class Home { public function index(){ echo '這里是后臺的控制器首頁'; } } ``` 此時我們在瀏覽器中輸入 ```cpp http://localhost/php_mvc/web/ ``` 如果顯示如下則表示成功 ```cpp 這里是后臺的控制器首頁 ```
                  <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>

                              哎呀哎呀视频在线观看