[原創]keheng淺談PHP中MVC框架之文件入口


MVC的文件入口怎么寫,完全是根據程序員的引擎設計來做,也是根據程序員喜好來做,但我們的最終目的卻是通過簡單的代碼引入引擎來處理其它的事務,就像我們要開車一樣,我們首先要點火,發動機才能發動一樣。在寫入口之前我們需要考慮幾個方面,URL解析方式,需要哪些用戶參數或系統需要帶入,用戶參數需要更改的地方,我們需要統一用一個文件來引入,文件可以是xml,也可以的PHP,也可以是其它的想到的方法,但keheng這里用的卻是php里面數組形式引入,這種形式貌似寫緩存的形式,從數據庫讀取了數據再生成一個php文件,再require此文件即可。當然,也可以在寫引擎的過程中再寫入口也行,只要能達到我們的目的就行。

就我們平常見到的文件入口來看,文件入口一般分為單文件入口和多文件入口,當然也有可能有其它的文件入口沒見過。

單文件入口當然是指網站訪問始終都是有訪問index.php這個文件,但關系到里面顯示的內容卻是根據后台的參數來加載,

比如:http://www.XXXX.com/index.php? Conttoller=index&action=show&id=1

這里的Conttoller就是我們需要顯示的頁面,通過獲取Conttoller的值來確實我們的MVC加載的是哪個模型,顯示的是哪個視圖,一般都需要建立一個專用的路由類來進行地址的判斷。action則是此模型的哪個操作,比如是顯示數據,或者添加數據,或者顯示文章類的,至於ID的作用是什么這里就不用說了。

多文件入口當然是指網站里面除了index.php文件名,還有其它文件訪問,比如同一個網站下有index.php,about.php………..等。

但還有另外一種URL方式http://localhost/control/ index / action/1,一般為偽靜態解析,以前看過有關SEO的文章,貌似入口為這種類型的對SEO優化不太好(keheng個人愚見)。其實是不是不太好我們平常就可以觀察到,比如我們百度下,隨便輸入一個關鍵詞,在開頭幾頁基本不到類似的地址被搜索出來。在SEO優化中就有一條為地址url的層級結構保持在三層內為宜。我們做WEB項目前當然要考慮到這些問題了。

以下為網上下載的一個模板的文件入口:

 1 define('UPLOAD_PATH', './Uploads/');
 2 
 3 define('VERSION', 'v2.1 Released');
 4 
 5 define('UPDATETIME', '20120323');
 6 
 7 define('APP_NAME', 'myphp');
 8 
 9 define('APP_PATH', './myphp/');
10 
11 define('APP_LANG', true);
12 
13 define('APP_DEBUG',false);
14 
15 define('THINK_PATH','./Core/');
16 
17 require(THINK_PATH.'/Core.php');

 

 

它的核心是THINK,入口指定了程序版本,更新日期等,真正的處理文件卻是在Core.php文件里。由於PHP模板都是開源的,個人認為可能有些網絡公司為了不讓別完全搞清楚他的產品,故意在PHP代碼里面多層次調用,來迷惑想學習他代碼思路的程序員,讓程序員跟來跟去跟的一頭霧水,其實我就這樣過,也可能是自己閱歷不夠造成的。

轉載請注明出處:http://www.cnblogs.com/keheng/archive/2012/05/26/2519102.html         作者:[九狐科技]keheng

另一種入口寫法:

1 <?php
2 
3          require_once './include/common.inc.php';
4 
5          $views->display('index.html');         
6 
7 ?>

 

加載了引擎文件后,在告訴$views類顯示哪一個視圖文件,這樣確實是直觀很多,但我個人不怎么喜歡這種方法,雖然如果修改文件模板直接在對應的文件進行修改,感覺不太好控制,而且貌$views到最后沒關閉,占着內存。

 

看了些別人的入口后keheng自己也有了入口的思路。不管是單文件還是多文件,全都用這入口,總之網站根目錄下文件內容全都是這個

1 <?php
2 
3          require 'command/config.php';
4 
5          require 'command/app.php';
6 
7          app::run($config);
8 
9 ?>

 

實際上我的對像模型是在config.php里設置好的

 1 <?php
 2 
 3 $config['Templates'] = array(                //名稱記得全轉為小寫
 4 
 5          ‘keheng’                              =>                                 array('keheng.php',0),
 6 
 7          ' index '                                 =>                                 array('index.php',0),
 8 
 9 );
10 
11 ?>

 

分析地址調用相應的視圖,這樣我就可以專門用一個文件來進行模型與視圖對應設置,在用的時候即可用require 'command/config.php';加載這個數組。

可能有高人會認為這種方法貌似不太好,可能是keheng見識太少閱歷不夠或技術還不夠,現在還沒想到更好一些的方法

 

不管入口怎么寫,最終的目的是為了引入引擎,讓網站跑起來,程序制作中以方便為主,怎么寫入口根據自己的愛好,怎么樣順手就怎么寫。

下一篇為《keheng淺談PHP中MVC框架之系統引擎》,這些都只是說的keheng對MVC的了解來寫的,keheng真心的希望有高人指點有問題的地方,這里先說聲:謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM