程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> phpcms(1)phpcms V9 MVC模式 與 URL訪問解析(轉),phpcmsmvc

phpcms(1)phpcms V9 MVC模式 與 URL訪問解析(轉),phpcmsmvc

編輯:關於PHP編程

phpcms(1)phpcms V9 MVC模式 與 URL訪問解析(轉),phpcmsmvc


【1】URL訪問解析

觀察訪問網頁時的網址,可以得出模塊訪問方法,如下示例:

http://www.abcd.com.cn/phpcms/index.php?m=content&c=index&a=show&id=1

關於此URL解析如下:

m = content 為模塊/模型名稱 位於phpcms/modules/content (必須項

c = index 為控制器名稱 位於phpcms/modules/content/index.php (必須項

a = show 為事件名稱 位於phpcms/modules/content/index.php 中的show方法

id = 1 為其他參數 與正常get傳遞參數形式相同 

那麼,問題來了!我們經常訪問首頁的網址為:http://www.abcd.com.cn/phpcms/index.php 為什麼沒有m和c的值呢?

這裡解釋一下,系統在沒有指定模塊和控制器的時候,會執行默認的模塊和操作。如上的網址,PHPCMS默認路由會定位到content模塊的index控制器中的init操作。因此與下面的URL結果是相同的:

http://www.abcd.com.cn/phpcms/index.php?m=content&c=index&a=init

系統還支持URL路由的功能,這些都能夠帶來其他的url訪問效果。

其路由文件位於 phpcms\caches\configs\route.php 內容整理如下所示:

復制代碼

 1 <?php
 2 /**
 3  * 路由配置文件
 4  * 默認配置為default如下:
 5  * 'default'=>array(
 6  *     'm'=>'phpcms', 
 7  *     'c'=>'index', 
 8  *     'a'=>'init', 
 9  *     'data'=>array(
10  *         'POST'=>array(
11  *             'catid'=>1
12  *             ),
13  *         'GET'=>array(
14  *             'contentid'=>1
15  *             )
16  *         )
17  * )
18  * 其中“m”為模型,“c”為控制器,“a”為事件,“data”為其他附加參數。
19  * data為一個二維數組,可設置POST和GET的默認參數。
20  * POST和GET分別對應PHP中的$_POST和$_GET兩個超全局變量。
21  * 在程序中你可以使用$_POST['catid']來得到data下面POST中的數組的值。
22  * data中的所設置的參數等級比較低。如果外部程序有提交相同的名字的變量,將會覆蓋配置文件中所設置的值。
23  * 如:外部程序POST了一個變量catid=2那麼你在程序中使用$_POST取到的值是2,而不是配置文件中所設置的1。
24  */
25 return array(
26     'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init'),
27 );

復制代碼

為了更具體的理解,簡單實例如下:

1. 在phpcms/modules目錄下,新建一個文件夾,命名為demo,即模塊名為demo

2. 在demo文件夾中,新建一個文本文件,命名為test,修改文件類型為php。用Notepad++打開test文件,編輯內容如下:

復制代碼

1 <?php
2     class test
3     {
4         public function show()
5         {
6             echo "I Love PHPCMS V9.";
7         }
8     }
9 ?>

復制代碼

注意:test.php裡面的內容,必須要用class類的寫法,否則會提示control找不到,即mvc中的c找不到。如果沒有指定a,則調用init方法,如果沒有實現init方法,則會顯示:Action does not exist。

3. 在浏覽器的網址欄輸入:http://localhost/phpcms/index.php?m=demo&c=test&a=show 回車 結果如下圖:

【2】模塊

phpcms V9框架中的模塊,位於phpcms/modules目錄中,每一個目錄稱為一個模塊。即上文URL訪問中的m。

如果需要創建一個模塊,只要在phpcms/modules目錄下創建文件夾並放入你的控制器類就可以了。

【3】控制器

關於控制器類,可以參見文章《phpcms V9 添加模塊》

Good Good Study, Day Day Up.

順序  選擇  循環  總結

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved