一.創建一個模塊開發流程:
1.創建數據庫和數據表,沒有數據庫操作可略過.
2.創建模塊目錄
3.創建模塊控制器類;
4.創建模塊類與模塊函數,如果只是簡單的模塊可以不必創建.
5.創建模板文件;
6.運行和調試。
二,創建模塊目錄:分析
phpcms v9框架中的模塊,位于phpcms/modules目錄中 每一個目錄稱之為一個模塊,如果要創建一個模塊,只要在 phpcms/modules 目錄下創建文件夾并放入你的控制器類就可以了.
例如我要開發一個叫做test的模塊,那么首先在 phpcms/modules 目錄下創建文件夾,并將其命名為test.
標準結構:
classes:模塊類庫包
function:模塊函數庫包
templates:模塊模版包 通常放置含權限控制的控制器模版,也就是后臺模版.
如果您的模板有單獨的前臺模板,你需要在phpcms/templates/default下創建一個您的模塊目錄來放置前臺模板,"default"為你的風格包名稱,我們默認適用default.
三、創建模塊控制器類:
在創建模塊中我們已經創建好了一個名為“test”的模塊,接下來我們繼續為這個模塊添加兩個控制器類.
phpcms v9的控制器就是模塊的類文件,位于phpcms/modules/模塊/目錄下面,類名成就是文件名+.php,例如一個名為mytest的控制器,那么他的命名為mytest.php即可,控制器類默認繼承系統的函數庫,可以直接使用,控制器類的類名稱與控制器文件名必須相同.
控制器類文件包含兩種形式:
1.mytest.php 控制器,前臺瀏覽,不含權限控制:
- <?php
- defined('IN_PHPCMS') or exit('No permission resources.');
- class mytest {
- function __construct() {
- }
- public function init() {
- $var = 'hello world!';
- echo $myvar;
- }
- public function mylist() {
- $var = 'hello world!this is a example!';
- echo $myvar;
- }
- }
- ?>
這個控制器的url訪問方法:
index.php?m=test&c=mytest
index.php?m=test&c=mytest&a=mylist
沒有填寫 “a” 的情況下,默認調用init方法.
2.mytest_admin.php 控制器,后臺管理(含權限控制)
后臺控制控制器需要加載admin模塊下的admin類,并繼承該類,需要注意的是因為你添加的控制器類繼承了其他的類,你要小心你控制器的方法名不要和該類中的方法名一樣了,否則會造成影響,具體請查看admin類中有哪些方法:
- <?php
- defined('IN_PHPCMS') or exit('No permission resources.');
- pc_base::load_app_class('admin','admin',0);
- class mytest_admin extends admin {
- public function __construct() {
- }
- public function init() {
- $myvar = 'oh,i am phpcmser';
- echo $myvar; //開源軟件:Vevb.com
- }
- }
- ?>
在控制器中增加模板調用
phpcms 可以實現完全的模板與程序分離,所以在我們的控制器程序中要加載模板,才可以更友好的顯示出來.
1.加載前臺模板
前臺模板文件在phpcms/templates/default/模塊名稱 目錄中,本示例也就在phpcms/templates/default/test中,加載模板方法如下:
include template('test', 'mytest', 'default');
其中 test為模塊名稱 mytest 為模板目錄下模板名稱,default為風格名稱,默認不填為defalut,在上面例子中如果要給mytest.php中init方法加載一個mytest的模板,如下:
- public function init() {
- $var = 'hello world!';
- include template('test', 'mytest', 'default');
- }
這樣我們通過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的模板,如下:
- public function init() {
- $myvar = 'oh,i am phpcmser';
- include $this->admin_tpl('mytest_admin_list');
- }
四:創建數據庫模型類:
數據庫模型位于:phpcms/model/ 目錄下,數據模型文件的命名規則建議為數據表名稱+'_model.class.php'.
如果在我們的創建的模塊中我要使用一個數據庫“test”,首先需要建立一個數據庫模型文件,文件名稱為'test_model.class.php',內容如下:
- <?php
- defined('IN_PHPCMS') or exit('No permission resources.');
- pc_base::load_sys_class('model', '', 0);
- class test_model extends model {
- public function __construct() {
- $this->db_config = pc_base::load_config('database');
- $this->db_setting = 'default';
- $this->table_name = 'test';
- parent::__construct();
- }
- }
- ?>
注意:
1.數據庫模型類名稱必須與文件名稱相同;
2.$this->db_setting = 'default'為數據庫配置文件中配置數據庫鏈接池名稱,默認為default,一般情況下不需要修改.
3.$this->table_name = 'test'為數據表名稱.
這樣我們就建立好了一個數據庫模型類,在模塊的控制器中使用:
$this->db = pc_base::load_model('test_model');
來加載,具體如下:
- <?php
- defined('IN_PHPCMS') or exit('No permission resources.');
- class mytest {
- private $db;
- function __construct() {
- $this->db = pc_base::load_model('test_model');
- }
- public function init() {
- $result = $this->db->select();
- var_dump($result);
- }
- }
- ?>
其中$this->db中所支持的方法請參照phpcms/libs/classes/model.class.php中方法.
新聞熱點
疑難解答