転載元: http://www.cnblogs.com/semcoding/p/3347600.html
PHPCMS V9 構造設計
ルートディレクトリ
|–API構造ファイルディレクトリ
|–cachesキャッシュファイルディレクトリ
|–configsシステム構成ファイルディレクトリ
|–caches_*システムキャッシュディレクトリ
|–phpcms phpcmsフレームワークメインディレクトリ
|–言語フレームワーク言語パックディレクトリ
| – libs フレームワーク メイン クラス ライブラリ、メイン関数ライブラリ ディレクトリ
| – モジュール フレームワーク モジュール ディレクトリ
| – phpsso_server phpsso メイン ディレクトリ
| | – css システム css パッケージ
| – 画像システム 画像パッケージ
| – js システム js パッケージ
|–index.php プログラムのメイン入口
PHPCMS V9 コアファイルの説明
モジュールとコントローラー
モジュール: phpcms v9 フレームワークのモジュールは phpcms/modules ディレクトリにあります。各ディレクトリはモジュールと呼ばれます。それが URL アクセスの m です。
コンテンツモジュールへのアクセス例: http://www.yourname.com/index.php?m=content
コントローラー:
phpcms v9 のコントローラーは、次の場所にあるモジュールのクラス ファイルです。 modules/ ディレクトリの下の phpcms/modules/ 。クラス名はファイル名 + .php です。たとえば、コントローラーの名前が abc の場合、その名前は abc.php になります。コントローラー クラスはデフォルトでシステムの関数ライブラリを継承し、直接使用できます。コントローラクラスのクラス名とコントローラファイル名は同じである必要があります。テスト モジュールの下に abc.php を作成する場合、ブラウザに URL を入力します: http://www.yourname.com/index.php?m=test&c=abc
二次開発スキルIf既存のコントローラで二次開発を実行する場合、アップグレードを容易にするためにカーネル ファイルを直接変更することはお勧めできません。「MY_*.php」の形式で二次開発を実行できます。
たとえば、phpcms/mood/index.php で二次開発を行いたいとします。 「MY_index.php」はindex.phpと同じディレクトリに作成できます <?php
class MY_index extends index{
function __construct() {
parent::__construct();
}
……your code
}
ファイルパス: ルートディレクトリ/caches/configs
database.php データベース構成ファイル
system.php システム構成ファイルroute.php ルーティング設定ファイル
CMSエントリファイル:
PHPCMS は MVC デザイン パターンを使用して開発され、モジュールと操作に基づいてアクセスされます。プロジェクトのデプロイとアクセスには、どのモジュールや関数にアクセスしても、単一のエントリ モードが 1 つだけあります。
エントリープログラムは、初期段階でユーザーリクエストを処理するブートプログラムです。これは、エンド ユーザーの要求に応じて直接実行できる唯一のものです。
ファイルパス: ルートディレクトリ/index.php
リーリーこのコードは、まず phpcms フレームワークのブート ファイルbase.php をロードし、次に Web アプリケーション インスタンスを作成し、指定された構成ファイルに基づいて実行します。
PHPCMS フレームワーク エントリ ファイル:
ファイルパス: ルートディレクトリ/phpcms/base.php コードスニペットは次のとおりです:
リーリーこのファイルは、システム/モジュール クラス メソッドのインスタンス化、システム/モジュール メソッドの呼び出し、共通システム定数などを含むフレームワーク エントリ ファイルです。例:
リーリーグローバル関数ファイル:
ファイルパス: ルートディレクトリ/phpcms/libs/functions/global.func.php コードスニペットは次のとおりです:
リーリーこのファイル内の関数はシステム全体の基本関数であり、システム内で直接呼び出すことができます。
二次的な開発スキル:
独自のグローバル関数を追加する必要がある場合は、必要に応じて /phpcms/libs/functions/global.func.php/extention.func.php に追加できます。これはアップグレードには影響しません
データモデルの基本クラス:
ファイル パス: ルート ディレクトリ/phpcms/libs/classes/model.class.php コード スニペットは次のとおりです:
リーリーデータモデルをロードした後、データベースクラスのメソッドを使用してデータベース操作を実行できます。
フォーム呼び出しクラス:
ファイルパス: ルートディレクトリ/phpcms/libs/classes/form.class.php。 コードスニペットは次のとおりです:
リーリーこのクラスをインスタンス化すると、プログラム内でエディター、フォームのアップロード、日付の選択、列構造、その他のフォームを呼び出すことができます。 インスタンス化メソッド: pc_base::load_sys_class('form', '', 0);
テンプレート解析キャッシュクラス:
ファイルパス: ルートディレクトリ/phpcms/libs/classes/template_cache.class.php。 コードスニペットは次のとおりです:
リーリーこのクラスは、テンプレートの解析、テンプレートの解析、テンプレート キャッシュの更新に使用されます
PHPCMS V9 二次開発PHPCMS URL アクセス:
PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
参数名称 描述 位置 备注
模块访问方法[示例]:
二次开发命名规范
类文件需要以.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 { //这个控制器需要登录后台才可以访问 } ?>