1. 程式人生 > >phpcms v9 建立模組

phpcms v9 建立模組

一.建立一個模組開發流程:

1.建立資料庫和資料表;(沒有資料庫操作可略過) 
2.建立模組目錄 
3.建立模組控制器類; 
4.建立模組類與模組函式;(如果只是簡單的模組可以不必建立) 
5.建立模板檔案; 
6.執行和除錯。

一、

2.建立模組目錄:分析

phpcms v9框架中的模組,位於phpcms/modules目錄中 每一個目錄稱之為一個模組
如果要建立一個模組,只要在 phpcms/modules 目錄下建立資料夾並放入你的控制器類就可以了。

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

標準結構:
classes   :模組類庫包
function  :模組函式庫包
templates:模組模版包 通常放置含許可權控制的控制器模版,也就是後臺模版


如果您的模板有單獨的前臺模板,你需要在phpcms\templates\default下建立一個您的模組目錄來放置前臺模板,"default"為你的風格包名稱,我們預設適用default


一、
3.建立模組控制器類:

在建立模組中我們已經建立好了一個名為“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; 
  } 

?>


在控制器中增加模板呼叫

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中方法