新浦京81707con > 首页 > phpcms学习总结,二次开发之构建模块全过程

原标题:phpcms学习总结,二次开发之构建模块全过程

浏览次数:169 时间:2019-07-10

文件目录结构
根目录
|  –  api  接口文件目录
|  –  caches 缓存文件目录
       |  – configs 系统布局文件目录
       |  – caches_* 系统缓存目录
|  –  phpcms  phpcms框架主目录
       |  – languages 框架语言包目录
       |  – libs 框架主类库、主函数库目录
       |  – model 框架数据库模型目录
       |  – modules 框架模块目录
       |  – templates 框架连串模板目录
|  –  phpsso_server  phpsso主目录
|  –  statics  系统附属类小部件包
       |  – css 系统css包
       |  – images 系统图片包
       |  – js 系统js包
|  –  uploadfile  网址附属类小部件目录
|  –  admin.php  后台管理入口
|  –  index.php  程序主入口
|  –  crossdomain.xml  FLASH跨域传输文件
|  –  robots.txt 搜索引擎蜘蛛限制配置文件
|  –  favicon.ico  系统icon图标

一.开立二个模块开采流程:

率先:开垦流程

URL访问
PHPCMS是使用MVC设计情势开辟,基于模块和操作的法子开始展览寻访,选取单一入口方式展开项目布局和访谈,无论访谈任何二个模块可能功用,唯有贰个联合的进口。
参数名称    描述    地点    备注
m    模型/模块名称    phpcms/modules中模块目录名称    必须
c    调节器名称    phpcms/modules/模块/*.php 文件名称    必须
a    事件名称        phpcms/modules/模块/*.php 文件中方法名称

1.创办数据库和数据表;(未有数据库操作可略过) 
2.开立模块目录 
3.成立模块调节器类; 
4.创制模块类与模块函数;(假若只是轻松的模块能够没有须要成立) 
5.创办模板文件; 
6.周转和调节和测验。

为您的phpcms创立一个模块的貌似开拓流程是:

模块访问方法[示例]:

其中
m = content 为模型/模块名称 位于phpcms/modules/content
c = index   为调控器名称    位于phpcms/modules/content/index.php
a = show    为艺术名称      位于phpcms/modules/content/index.php 中show()方法
id = 1 为任何参数 与常规get传递参数格局一样

一、

创建数据库和数据表;(未有数据库操作可略过)

一旦大家拜见您的域名 如:

phpcms私下认可路由会一定到content模块的index调控器中的init操作,因为系统在未曾点有名的模特块和调控器的时候,会施行暗许的模块和操作。
所以上边包车型地铁UCR-VL的结果是平等的:系统还匡助U哈弗L路由的效益,那几个都可以拉动别的的url访谈效果。

2.成立模块目录:深入分析

创办模块目录

系统类库与函数调用
1.系统类库位于系统的phpcms/libs/classes目录下边,函数库文件名称为*.class.php
2.系统函数库位于系统的phpcms/libs/functions目录上边,函数库文件名称为*.func.php,个中global.func.php为框架中暗中同意加载,global.func.php中等学校函授数可直接使用
系统类库调用
pc_base::load_sys_class('类名','扩大地址','是不是伊始化');
示例:
$http = pc_base::load_sys_class('http'); //实例化http类
pc_base::load_sys_class('format', '', 0); //调用form类,不举行实例化操作
系统函数库调用
pc_base::load_sys_func('函数库名');
示例:
pc_base::load_sys_func('mail'); 调用mail函数包

phpcms v9框架中的模块,位于phpcms/modules目录中 每七个索引称之为三个模块
假如要开创二个模块,只要在 phpcms/modules 目录下创办理文件件夹并归入你的主宰器类就能够了。

开创模块调整器类;

模块
phpcms v9框架中的模块,位于phpcms/modules目录中 每四个目录称之为八个模块。即url访问中的m
示例:

那正是说您访谈的正是phpcms/modules/content 这些模块。
假如创造贰个模块,只要在 phpcms/modules 目录下开创文件夹并放入你的主宰器类就可以了

举个例子笔者要支付二个称呼test的模块,那么首先在 phpcms/modules 目录下开创文件夹,并将其取名叫test。

成立模块类与模块函数;(假设只是简短的模块能够无需创造)

控制器
phpcms v9的调控器正是模块的类公事,位于phpcms/modules/模块/目录上面。类名成正是文本名 .php,比如一个名叫mytest的调控器,那么她的命名叫mytest.php就能够。
决定器类私下认可承接系统的函数库,可以直接使用。调整器类的类名称与调节器文件名必须一致
一经你创造了二个mytest.php在test模块下,那么我们在浏览器里面输入U传祺L:

正式协会:
classes   :模块类库包
function  :模块函数库包
templates:模块模版包 经常放置含权限决定的调控器模版,也正是后台模版

制造模板文件;

上面是一个调整器类的中坚格式,在创设立模型块部分会具体解说
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
class mytest {
    function __construct() {
    }
    public function init() {
        echo 'hellp phpcms v9,my name is defalut action';
    }
}
?>
假令你增添的决定器类承袭了另外的类,你要小心您的方式名不要和丰盛类中的方法名一样了,不然你的方法会覆盖原有的。

要是你的模板有独立的前台模板,你要求在phpcmstemplatesdefault下创办贰个你的模块目录来放置前台模板,"default"为您的品格包名称,我们暗中认可适用default

运作和调节和测验。

命名标准
PHPCMS其自身的一定职业。下边是采用PHPCMS做三次开拓中应当服从的命名规范:
类公事须要以.class.php为后缀(这里是指的phpcms的系列类库文件和模块中的类库文件,第三方引进的不做要求),比方http.class.php。
函数文件须求以.func.php为后缀(第三方引入的不做须求),举个例子mail.func.php。
类名和文件名一样,比方 phpcmsapp类的文书命名是phpcmsapp.class.php。
数据模型须求以“数据表名称_model.class.php”为方式,类名称与公事名必须一律。

一、
3.创制模块调控器类:

第二:成立模块

配备文件调用
布署文件配置在caches/configs/目录下。
陈设文件调用:使用 load_config方法
$upload_url = pc_base::load_config('配置文件','要获得的安顿键','暗中同意配置。当得到配置项目战败时该值产生作用','是不是强制重新加载');
示例:
调用系统安顿中的附属类小部件路线
$upload_url = pc_base::load_config('system','upload_url');

在创建模块中我们已经创立好了三个名字为“test”的模块,接下去大家承继为那几个模块加多八个调控器类。

phpcms v9框架中的模块,位于phpcms/modules目录中 每叁个目录称之为四个模块
设若要开创二个模块,只要在 phpcms/modules 目录下创办理文件件夹并归入你的垄断(monopoly)器类就能够了。

一次开垦本领
1.如果要对已存在的调节器实行二次开采,为了方便晋级不建议直接对基础文件直接退换该,您能够由此"MY_*.php"的样式举办一次开发。
诸如您要对改phpcms/mood/index.php实行叁回开荒。您可以在与index.php同级的目录下成立"MY_index.php"
MY_index.php代码如下
<?php
class MY_index extends index{
    function __construct() {
        parent::__construct();
    }
    //……your code
 }
 ?>
如此当您通过url访谈index调整器的时候,系统会暗中同意指向MY_index.php 而且原来的小说件的秘籍将被接续,能够一向利用。

phpcms v9的调控器便是模块的类公事,位于phpcms/modules/模块/目录上面。类名成就是文件名 .php,例如贰个名称叫mytest的调节器,那么他的命名字为mytest.php就可以。控制器类暗中同意继承系统的函数库,能够直接行使。调控器类的类名称与调控器文件名必须一致。

诸如作者要开垦二个可以称作test的模块,那么首先在 phpcms/modules 目录下创制文件夹,并将其取名叫test。

数据库配置
数据库配置文件地方:caches/configs/database.php
我们开采那一个布局文件,参与我们的数据库配置音信。数据库配置消息为二维数组协会,默以为default,能够依附default结构布局多个数据库链接(如:extended_1)
<?php
return array (
    'default' => array (
        'hostname' => 'localhost',
        'database' => 'phpcms',
        'username' => 'admin',
        'password' => 'admin',
        'tablepre' => 'v9_',
        'charset' => 'gbk',
        'type' => 'mysql',
        'debug' => true,
        'pconnect' => 0,
        'autoconnect' => 0
    ),
    /* 以下十分增加*/
    'extended_1' => array (
        'hostname' => '10.10.125.2',
        'database' => 'phpcms',
        'username' => 'admin',
        'password' => 'admin',
        'tablepre' => 'v9_',
        'charset' => 'gbk',
        'type' => 'mysql',
        'debug' => true,
        'pconnect' => 0,
        'autoconnect' => 0
    ),
);
?>
传闻你的数据库连接音讯修改上边的配备内容,修改达成后,保存该数据库配置文件。

操纵器类文件富含三种格局:
1.mytest.php 调控器,前台浏览(不含权限决定)

test模块的正规协会常见是这么的。

路由配置
路由配置文件地点:caches/configs/route.php
咱俩开辟那一个布局文件,加入我们的路由配置新闻。路由配置新闻为二维数组组织,暗中认可为default。
路由配置文件内容是那样的:
<?php
return array(
    'default'=>array('m'=>'admin', 'c'=>'index', 'a'=>'init'),
    'test.youname.com'=>array('m'=>'test', 'c'=>'index', 'a'=>'init'),
);
?>
data为三个二维数组,可设置POST和GET的暗中同意参数。POST和GET分别对应PHP中的$_POST和$_GET八个超全局变量。
如下边包车型客车事例,在先后中您可以利用$_POST['catid']来获得data上边POST中的数组的值。
data中的所设置的参数品级比非常的低。即使外部程序有付出同样的名字的变量,将会覆盖配置文件中所设置的值。
如:
<?php
return array(
    'default'=>array(
        'm'=>'phpcms',
        'c'=>'index',
        'a'=>'init',
        'data'=>array(
            'POST'=>array(
                'catid'=>1
            ),
            'GET'=>array(
                'contentid'=>1
            )
        )
    )
)
?>
表面程序POST了多个变量catid=2那么你在程序中动用$_POST取到的值是2,并非布局文件中所设置的1。

<?php 
  defined('IN_PHPCMS') or exit('No permission resources.'); 
  class mytest { 
     function __construct() { 
    } 
    public function init() { 
     $var = 'hello world!'; 
     echo $myvar; 
     }

图片 1

系统计划
系统布署文件地方:caches/configs/system.php
切实详尽该文件注释

    public function mylist() { 
     $var = 'hello world!this is a example!'; 
     echo $myvar; 
     } 
  } 
?>

其中

创设立模型块
开拓流程
为您的phpcms创立二个模块的形似开拓流程是:

本条调控器的url采访方法
index.php?m=test&c=mytest 
index.php?m=test&c=mytest&a=mylist
不曾填写 “a” 的意况下,暗中认可调用init方法

classes为模块类库包

  1.    成立数据库和数据表;(没有数据库操作可略过)
  2.    创制模块目录
  3.    制造模块调整器类;
  4.    创设模块类与模块函数;(若是只是轻巧的模块能够不必创造)
  5.    创造模板文件;
  6.    运转和调度。

 

 

创办模块
phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为贰个模块
若果要开创三个模块,只要在 phpcms/modules 目录下创办理文件件夹并放入你的决定器类就足以了。
例如作者要支付多个名字为test的模块,那么首先在 phpcms/modules 目录下创办理文件件夹,并将其命名字为test。
test文件夹下平时有多个文本夹:
classes    为模块类库包
functions  为模块函数库包
templates  为模块模板包 这里常常放置含有权限决定的调整器模板,也正是后台模板。

2.mytest_admin.php 调节器,后台管理(含权限决定)

functions为模块函数库包

假令你的沙盘有单独的前台模板,你必要在phpcmstemplatesdefault下创办一个您的模块目录来放置前台模板
"default"为你的风骨包名称,大家暗许适用default
此处我们在default文件夹下创立名字为test的文件夹存放模板

后台调整调控器须求加载admin模块下的admin类,并三番五次该类。要求小心的是因为你加多的主宰器类袭继了别样的类,你要小心你调控器的章程名不要和该类中的方法名同样了,不然会招致影响,具体请查看admin类中有怎么着方法。

 

创立模块调节器
在开创模块中大家已经创办好了二个名叫“test”的模块,接下去大家承袭为那个模块增多八个调节器类。
phpcms v9的调整器便是模块的类公事,位于phpcms/modules/模块/目录上边。
类名成正是文件名 .php,举例一个名称为mytest的调整器,那么他的命名称为mytest.php就能够。
调控器类暗中认可承袭系统的函数库,可以一贯运用。调节器类的类名称与调节器文件名必须一律。

<?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; 
  } 

?>

templates为模块模板包这里经常放置含有权限决定的调节器模板,也正是后台模板。

垄断器类文件包蕴两种格局:
1.mytest.php 调控器,前台浏览(不含权限决定)
<?php
/*
defined('IN_PHPCMS') or exit('No permission resources.');
class mytest {
    function __construct() {
    }
    public function init() {
        $myvar = 'hello world!';
        echo $myvar;
    }
    public function mylist() {
        $myvar = 'hello world!this is a example!';
        echo $myvar;
    }
}
*/
?>
那么些调控器的url访谈方法前边早就介绍过了


未曾填写 “a” 的景况下,暗中同意调用init方法

在调节器中追加模板调用

假设你的模板有独立的前台模板,你要求在phpcmstemplatesdefault下开创多个您的模块目录来放置前台模板,"default"为你的风格包名称,咱们私下认可适用default  

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.加载前台模板
前台模板文件在phpcmstemplatesdefault模块名称 目录中,本示例也就在phpcmstemplatesdefaulttest中
加载模板方法如下:
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.加载后台模板
后台模板文件在phpcmsmodules模块名称templates 目录中,本示例也就在phpcmsmodulestesttemplates 中
加载模板方法如下:
include $this->admin_tpl('mytest_admin_list');
其中mytest_admin_list为phpcmsmodulestesttemplates中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 能够兑现完全的模版与程序分别,所以在我们的调控器程序中要加载模板,才得以更友善的显得出来。

图片 2

创建数据库模型类
数据库模型位于: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'为数据表名称

1.加载前台模板

 第三:创制模块调节器类

这么大家就确立好了贰个数据库模型类。
在模块的调整器中动用
$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中艺术

前台模板文件在phpcmstemplatesdefault模块名称 目录中,本示例也就在phpcmstemplatesdefaulttest中

在创设模块中大家早已创建好了一个名称为“test”的模块,接下去大家继续为这一个模块增多八个调节器类。


加载模板方法如下:

phpcms v9的调控器正是模块的类公事,位于phpcms/modules/模块/目录上边。类名成正是文本名 .php,比方二个名称叫mytest的调控器,那么她的命名称叫mytest.php就可以。调整器类暗中认可承接系统的函数库,能够直接使用。调整器类的类名称与调整器文件名必须一致

 include template('test', 'mytest', 'default');

决定器类文件包罗二种样式:

个中 test为模块名称 mytest 为模板目录下模板名称,default为作风名称,暗许不填为defalut

1.mytest.php 调整器,前台浏览(不含权限调节)

在上面例子中假如要给mytest.php中init方法加载贰个mytest的模版,如下

<?php 
  defined('IN_PHPCMS')orexit('No permission resources.'); 
  classmytest{ 
    function__construct(){ 
    } 
    publicfunctioninit(){ 
     $var='hello world!'; 
     echo $myvar; 
     }

 

 

  public function init() { 
     $var = 'hello world!'; 
     include template('test', 'mytest', 'default'); 
   }

    publicfunctionmylist(){ 
     $var='hello world!this is a example!'; 
     echo $myvar; 
     } 
  } 
?>

这么大家通过url访问该方法的时候也就加载了对应的模板。

本条调节器的url访谈方法后面已经介绍过了,  

2.加载后台模板

 

后台模板文件在phpcmsmodules模块名称templates 目录中,本示例也就在phpcmsmodulestesttemplates 中

尚未填写 “a” 的事态下,默许调用init方法

加载模板方法如下:

2.mytest_admin.php 调整器,后台管理(含权限调控)
 
后台调控调节器必要加载admin模块下的admin类,并持续该类。要求专注的是因为你增加的主宰器类承继了别的的类,你要小心您调控器的法子名不要和该类中的方法名同样了,否则会产生影响,具体请查看admin类中有怎样方法。

include $this->admin_tpl('mytest_admin_list');

<?php 
defined('IN_PHPCMS')orexit('No permission resources.'); 
pc_base::load_app_class('admin','admin',0); 
classmytest_adminextendsadmin{ 
  publicfunction__construct(){ 
  } 
  publicfunctioninit(){ 
    $myvar='oh,i am phpcmser'; 
    echo $myvar; 
  } 

?>

其中mytest_admin_list为phpcmsmodulestesttemplates中mytest_admin_list.tpl.php,注意:此处模板必须以.tpl.php 作为后缀

在调控器中扩张模板调用

在地点例子中只要要给mytest_admin.php中init方法加载多个mytest_admin_list的模板,如下  

phpcms 能够兑现完全的模板与程序分别,所以在我们的调节器程序中要加载模板,工夫够更友好的展现出来。

本文由新浦京81707con发布于首页,转载请注明出处:phpcms学习总结,二次开发之构建模块全过程

关键词: 新浦京81707con

上一篇:Bootstrap关于表单控件,bootstrap表单控件

下一篇:没有了