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

phpcms V9 添加模塊(轉),phpcmsv9

編輯:關於PHP編程

phpcms V9 添加模塊(轉),phpcmsv9


轉自:http://www.cnblogs.com/Braveliu/p/5101345.html

為phpcms創建一個模塊的開發流程

【1】創建模塊目錄

通過前面的學習,我們已經知道phpcms V9框架中的模塊位於phcms/modules目錄中,每一個目錄稱之為一個模塊。

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

例如我要開發一個叫做test的模塊,那麼首先在 phpcms/modules 目錄下創建文件夾,並將其命名為test。

觀察其他模塊的結構,可知test模塊的標准結構通常應該也是這樣的:

classes 為模塊類庫包

functions 為模塊函數庫包

templates 為模塊模板包,通常放置含有權限控制的控制器模板,也就是後台模板。

如果你的模板有自定義的前台模板,你需要在phpcms\templates\default目錄下創建一個你的模塊名目錄來放置前台模板,“default”為你的風格包名稱,我們默認是用default。

【2】創建模塊控制器類

上一步,我們已經創建好了一個名為test的模塊,接下來我們繼續為這個模塊添加兩個控制器類。

phpcms V9 的控制器就是模塊的類文件,位於phpcms/modules/模塊名/目錄下面。類文件名稱就是控制器名+.php,例如一個名為mytest的控制器,那麼它的命名為mytest.php即可。控制器類默認繼承系統的函數庫,可以直接使用。

控制器類的類名稱與控制器文件名必須相同

控制器類文件包含兩種形式:

1.前台浏覽(不含權限控制),mytest.php 控制器

在phpcms/modules/test 目錄下,新建文本文件,命名為mytest,修改文件類型為php, 用Notepad++打開編輯內容為:

復制代碼

 1 <?php
 2     defined('IN_PHPCMS') or exit('No permission resources.');
 3     class mytest 
 4     {
 5         function __construct(){}
 6         public function init() 
 7         {
 8             $myvar = 'hello world!';
 9             echo $myvar;
10         }
11         public function mylist() 
12         {
13             $myvar = 'hello world! This is an example!';
14             echo $myvar;
15         }
16     }
17 ?>

復制代碼

其實,這個控制器的URL訪問方法前面已經介紹過,請參見《phpcms V9 MVC模式與URL訪問解析》

http://www.abcd.com.cn/phpcms/index.php?m=test&c=mytest等價於

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

沒有填寫“a”值的情況下,默認調用init方法。

為什麼這樣子?請把《phpcms V9 MVC模式與URL訪問解析》再讀一遍。

2.後台管理(含權限控制),mytest_admin.php 控制器

後台控制器需要加載admin模塊下的admin類,並繼承該類。需要注意的是因為添加的控制器類繼承了其它的類,要小心控制器類的方法名不要和該類中的方法名一樣了,否則會造成影響,具體請查看admin類中有哪些方法。

在phpcms/modules/test 目錄下,新建文本文件,命名為mytest_admin,修改文件類型為php, 用Notepad++打開編輯內容為:

復制代碼

 1 <?php
 2     defined('IN_PHPCMS') or exit('No permission resources.');
 3     pc_base::load_app_class('admin','admin',0);
 4     class mytest_admin extends admin 
 5     {
 6         public function __construct() {}
 7         public function init() 
 8         {
 9             $myvar = 'oh,i am phpcmser';
10             echo $myvar;
11         }
12     }
13 ?>

復制代碼

在控制器中增加模板調用

phpcms 可以實現完全的模板與程序分離,所以在我們的控制器程序中要加載模板,才可以更友好的顯示出來。

1.加載前台模板

前台模板文件在phpcms\templates\default\模塊名稱的目錄中,本示例也就在phpcms\templates\default\test中。

加載模板方法如下:

1 // 加載模板方法:
2 include template('test', 'mytest', 'default');

其中,test為模塊名稱,mytest為模板目錄下模板名稱,default為風格名稱,默認為default。

在上面例子中如果要給mytest.php中init方法加載一個mytest的模板(可以拷貝content模塊下的index.html作為替代),如下(所以模板名稱為index):

1 public function init() 
2 {
3     $myvar = 'hello world!';
4     echo $myvar;
5     include template('test', 'index');
6 }

這時,當我們再通過URL訪問該方法的時候也就加載了對應的模板。

2.加載後台模板

後台模板文件在phpcms\modules\模塊名稱\templates 目錄中,本示例也就在phpcms\modules\test\templates中

加載模板方法如下:

// 加載模板方法:
include $this->admin_tpl('mytest_admin_list');

其中mytest_admin_list為phpcms\modules\test\templates中mytest_admin_list.tpl.php。

注意:此處模板必須以.tpl.php 作為後綴

在上面例子中如果要給mytest_admin.php中init方法加載一個mytest_admin_list的模板,如下:

1 public function init() 
2 {
3     $myvar = 'oh,i am phpcmser';
4     echo $myvar;
5     include $this->admin_tpl('mytest_admin_list');
6 }

加載模板部分內容也可以參見系統框架源碼content模塊 phpcms\modules\content content.php文件的實現。

【3】創建數據庫模型類

至此,已經明確,各模塊的數據庫模型位於:phpcms/model/ 目錄下。

數據模型文件的命名規則建議為:數據表名稱 + '_model.class.php'

如果在我們的創建的模塊中我要使用一個數據庫“test”,首先需要建立一個數據庫模型文件,文件名稱為'test_model.class.php'

內容如下:

復制代碼

 1 <?php
 2 defined('IN_PHPCMS') or exit('No permission resources.');
 3 pc_base::load_sys_class('model', '', 0);
 4 class test_model extends model
 5 {
 6     public function __construct() 
 7     {
 8         $this->db_config = pc_base::load_config('database');
 9         $this->db_setting = 'default';
10         $this->table_name = 'test';
11         parent::__construct();
12     }
13  }
14 ?>

復制代碼

書寫數據庫模型類注意一下幾點:

1. 數據庫模型類名稱必須與文件名稱相同。

2. 必須繼承與數據庫模型基類model。

3. $this->db_setting = 'default'為數據庫配置文件中配置數據庫鏈接池名稱,默認為default,一般情況下不需要修改。

4. $this->table_name = 'test'為數據表名稱。

這樣我們就建立好一個數據庫模型類。那麼,怎麼使用呢?

在模塊的控制器中使用(加載方式):

$this->db = pc_base::load_model('test_model');

具體如下:

復制代碼

 1 <?php
 2     defined('IN_PHPCMS') or exit('No permission resources.');
 3     class mytest 
 4     {
 5         private $db;
 6         function __construct()
 7         {
 8             $this->db = pc_base::load_model('test_model'); // 加載數據庫模型
 9         }
10         public function init() 
11         {
12             $myvar = 'hello world!';
13             echo $myvar;
14             include template('test', 'index');
15             $result = $this->db->select(); // 調用select方法
16             var_dump($result);
17         }
18         public function mylist()
19         {
20             $myvar = 'hello world! This is an example!';
21             echo $myvar;
22         }
23     }
24 ?>

復制代碼

其中$this->db中所支持的方法請參照父類 phpcms/libs/classes/model.class.php 中方法。

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