転載元: 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
}
このように、URL 経由でインデックス コントローラーにアクセスすると、システムはデフォルトで MY_index.php をポイントし、元のファイルのメソッドが継承されて直接使用できるようになります。
ファイルパス: ルートディレクトリ/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 { //这个控制器需要登录后台才可以访问 } ?>