轉自:http://www.cnblogs.com/semcoding/p/3347600.html PHPCMS V9 結構設計 根目錄 |–api 結構文件目錄 |–caches 緩存文件目錄 |– configs 系統配置文件目錄 |– caches_* 系統緩存目錄 |–phpcms php... ...
轉自:http://www.cnblogs.com/semcoding/p/3347600.html
PHPCMS V9 結構設計
根目錄
|–api 結構文件目錄
|–caches 緩存文件目錄
|– configs 系統配置文件目錄
|– caches_* 系統緩存目錄
|–phpcms phpcms框架主目錄
|– languages 框架語言包目錄
|– libs 框架主類庫、主函數庫目錄
|– model 框架資料庫模型目錄
|– modules 框架模塊目錄
|– templates 框架系統模板目錄
|–phpsso_server phpsso主目錄
|–statics 系統附件包
| – css 系統css包
| – images 系統圖片包
| – js 系統js包
|–index.php 程式主入口
PHPCMS V9 核心文件說明
模塊與控制器
模塊:
phpcms v9框架中的模塊,位於phpcms/modules目錄中 每一個目錄稱之為一個模塊。即url訪問中的m。
訪問content模塊示例:http://www.yourname.com/index.php?m=content
控制器:
phpcms v9的控制器就是模塊的類文件,位於phpcms/modules/模塊/目錄下麵。類名成就是文件名+.php,例如一個名為abc的控制器,那麼他的命名為abc.php即可。控制器類預設繼承系統的函數庫,可以直接使用。控制器類的類名稱與控制器文件名必須相同。如果您創建了一個abc.php在test模塊下,那麼我們在瀏覽器裡面輸入URL:http://www.yourname.com/index.php?m=test&c=abc
二次開發技巧
如果要對已存在的控制器進行二次開發,為了方便升級不建議直接對內核文件直接修改該,您可以通過“MY_*.php”的形式進行二次開發。
例如您要對改phpcms/mood/index.php進行二次開發。您可以在與index.php同級的目錄下建立"MY_index.php"
<?php class MY_index extends index{ function __construct() { parent::__construct(); } ……your code }
這樣當您通過url訪問index控制器的時候,系統會預設指向MY_index.php 並且原文件的方法將被繼承,可以直接使用。
系統配置文件
文件路徑:根目錄/caches/configs
- database.php 資料庫配置文件
- system.php 系統配置文件
- route.php 路由配置文件
調用方法
如調用系統配置中的web_path:
pc_base::load_config('system', web_path ');
CMS入口文件:
PHPCMS是採用MVC設計模式開發,基於模塊和操作的方式進行訪問,採用單一入口模式進行項目部署和訪問,無論訪問任何一個模塊或者功能,只有一個統一的入口。
入口程式是在前期處理用戶請求的引導程式。它是唯一一個可以被最終用戶可以直接請求運行的。
文件路徑:根目錄/index.php
<?php define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR); include PHPCMS_PATH.'/phpcms/base.php'; pc_base::creat_app(); ?>
這段代碼首先載入了 phpcms 框架的引導文件 base.php,然後它根據指定的配置文件建立了一個 Web 應用實例並運行。
PHPCMS框架入口文件:
文件路徑:根目錄/phpcms/base.php 代碼片段如下:
<?php define('IN_PHPCMS', true); define('PC_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR); if(!defined('PHPCMS_PATH')) define('PHPCMS_PATH', PC_PATH.'..'.DIRECTORY_SEPARATOR); define('CACHE_PATH', PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR); …… ?>
該文件為框架入口文件,包含實例化系統/模塊類方法,調用系統/模塊方法,系統常用常量等。如:
pc_base::load_model(‘*_model’) 載入資料庫模型 pc_base::load_sys_class(‘classname’) 實例化系統類 pc_base::load_app_class(‘classname’,’admin’) 實例化模塊類 pc_base::load_sys_func (‘funcfile’) 調用系統函數庫
全局函數文件:
文件路徑:根目錄/phpcms/libs/functions/global.func.php 代碼片段如下:
<?php function new_addslashes($string){ if(!is_array($string)) return addslashes($string); foreach($string as $key => $val) $string[$key] = new_addslashes($val); return $string; } …… ?>
該文件中的函數,為全系統基礎函數,可以在系統中直接調用。
二次開發技巧:
如果需要增加自己的全局函數,可根據需要增加到/phpcms/libs/functions/global.func.php/extention.func.php中,不會影響升級
數據模型基類:
文件路徑:根目錄/phpcms/libs/classes/model.class.php 代碼片段如下:
<?php pc_base::load_sys_class('db_factory', '', 0); class model { //資料庫配置 protected $db_config = ''; //資料庫連接 protected $db = ''; //調用資料庫的配置項 protected $db_setting = 'default'; //數據表名 protected $table_name = ''; //表首碼 public $db_tablepre = ''; …… ?>
載入數據模型後,可以的資料庫該類中方法進行資料庫操作。
表單調用類:
文件路徑:根目錄/phpcms/libs/classes/form.class.php。 代碼片段如下:
<?php class form { //編輯器調用 public static function editor($textareaid = 'content', $toolbar = 'basic', $module = '', $catid = '', $color = '', $allowupload = 0, $allowbrowser = 1,$alowuploadexts = '',$height = 200,$disabled_page = 0) { } //圖片上傳調用 public static function images($name, $id = '', $value = '', $moudle='', $catid='', $size = 50, $class = '', $ext = '', $alowexts = '',$thumb_setting = array(),$watermark_setting = 0 ) { } …… ?>
通過實例化該類可以,調用在程式中調用編輯器、表單上傳、日期選擇、欄目結構等表單。 實例化方法:pc_base::load_sys_class('form', '', 0);
模板解析緩存類:
文件路徑:根目錄/phpcms/libs/classes/template_cache.class.php 。 代碼片段如下:
<?php final class template_cache { public function template_compile($module, $template, $style = ‘default’) { $tplfile = $_tpl = PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html'; …… ?>
該類作用為解析模板,解析模板及更新模板緩存
PHPCMS V9 二次開發
PHPCMS URL訪問:
PHPCMS是採用MVC設計模式開發,基於模塊和操作的方式進行訪問,採用單一入口模式進行項目部署和訪問,無論訪問任何一個模塊或者功能,只有一個統一的入口。
參數名稱 描述 位置 備註
- M 模型/模塊名稱 phpcms/modules中模塊目錄名稱 必須
- C 控制器名稱 phpcms/modules/模塊/*.php 文件名稱 必須
- A 事件名稱 phpcms/modules/模塊/*.php 中方法名稱
模塊訪問方法[示例]:
二次開發命名規範
類文件需要以.class.php為尾碼(這裡是指的phpcms的系統類庫文件和模塊中的類庫文件,第三方引入的不做要求),例如http.class.php。
函數文件需要以.func.php為尾碼(第三方引入的不做要求),例如mail.func.php。
類名和文件名一致,例如 phpcmsapp類的文件命名是phpcmsapp.class.php。
數據模型需要以“數據表名稱_model.class.php”為形式,類名稱與文件名必須相同。
二次開發開發流程
創建資料庫模型類
資料庫模型位於: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(); } } ?>
資料庫模型類名稱必須與文件名稱相同;
$this->db_setting = 'default'為資料庫配置文件中配置資料庫鏈接池名稱,預設為default,一般情況下不需要修改。 $this->table_name = ‘test’為數據表名稱
創建模塊
如果要創建一個模塊,只要在 phpcms/modules 目錄下創建文件夾並放入你的控制器類就可以了。
例如要開發一個叫做test的模塊,那麼首先在phpcms/modules 目錄下創建文件夾,並將其命名為test。模塊的標準結構通常是這樣的。
如果您的模板有單獨的前臺模板,你需要在phpcms/templates/default下創建一個您的模塊目錄來放置前臺模板,"default"為你的風格包名稱,我們預設適用default
訪問test模塊示例:http://www.yourname.com/index.php?m=test
創建模塊控制器類
為test模塊增加一個名為myest的控制器 文件路徑:根目錄/phpcms/modules/test/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; } } ?>
常用操作列表(1)
1.調用資料庫模型
$this->db = pc_base::load_model('test_model');
其中$this->db中所支持的方法請參照phpcms/libs/classes/model.class.php中方法
2.載入系統類
$http = pc_base::load_sys_class('http'); //實例化http類 pc_base::load_sys_class('format', '', 0); //調用form類,不進行實例化操作3.載入系統函
3.載入系統函數庫
pc_base::load_sys_func('mail'); //調用mail函數包
4. 載入模塊類
$test = pc_base::load_sys_class(‘classname‘,’test’); //實例化test模塊下 classname類
5.載入模塊函數庫
pc_base::load_sys_func(‘global‘,’test’); //調用test模塊的global函數包
常用操作列表(2)
6.載入前臺模板
include template('test', 'mytest', 'default');
7.載入後臺模板
include $this->admin_tpl('mytest_admin_list');
8.許可權控制
後臺控制控制器需要載入admin模塊下的admin類,並繼承該類
<?php defined('IN_PHPCMS') or exit('No permission resources.'); pc_base::load_app_class('admin','admin',0); class mytest_admin extends admin { //這個控制器需要登錄後臺才可以訪問 } ?>