zoukankan      html  css  js  c++  java
  • PHPCMS V9完全开发介绍


    PHPCMS V9 文件目录结构:
    根目录
    | – 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图标

    2.url访问
    参数名称 描述 位置 备注
    m 模型/模块名称 phpcms/modules中模块目录名称 必须
    c 控制器名称 phpcms/modules/模块/*.php 文件名称 必须
    a 事件名称 phpcms/modules/模块/*.php 中方法名称

    eg:http://yourdomain.com/index.php?m=content&c=index&a=show&id=1
    m = content 为模型/模块名称 位于phpcms/modules/content
    c = index 为控制器名称 位于phpcms/modules/content/index.php
    a = show 为时间名称 位于phpcms/modules/content/index.php 中show()方法
    id = 1 为其他参数 与正常get传递参数形式相同
    如果我们访问您的域名 如:http://www.yourdomain.com/index.php
    phpcms默认路由会定位到content模块的index控制器中的init操作,因为系统在没有指定模块和控制器的时候,会执行默认的模块和操作。因此下面的URL的结果是相同的:
    系统还支持URL路由的功能,这些都能够带来其他的url访问效果 http://www.yourdomain.com/index.php?m=content&c=index&a=init 一样效果
    3.系统类库与函数库调用
    1.系统类库位于系统的phpcms/libs/classes目录下面,函数库文件名为*.class.php,其中global.func.php为框架中默认加载,global.func.php中函数可直接使用

    2.系统函数库位于系统的phpcms/libs/functions目录下面,函数库文件名为*.func.php

    系统类库调用:
    $http = pc_base::load_sys_class('http'); //实例化http类
    pc_base::load_sys_class('format', '', 0); //调用form类,不进行实例化操作

    系统函数库调用:
    pc_base::load_sys_func('mail'); 调用mail函数包
    PHPCMS命名规范:
    类文件需要以.class.php为后缀(这里是指的phpcms的系统类库文件和模块中的类库文件,第三方引入的不做要求),例如http.class.php。
      函数文件需要以.func.php为后缀(第三方引入的不做要求),例如mail.func.php。
      类名和文件名一致,例如 phpcmsapp类的文件命名是phpcmsapp.class.php。
      数据模型需要以“数据表名称_model.class.php”为形式,类名称与文件名必须相同。

    4.配置文件调用:
    配置文件配置在caches/configs/目录下。
    配置文件调用:使用 load_config方法
    $upload_url = pc_base::load_config('system','upload_url');

    5.二次开发小技巧:
    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 并且原文件的方法将被继承,可以直接使用。(继承)

    配置:
    1.数据库配置:
    数据库配置文件位置:caches/configs/database.php
    我们打开这个配置文件,加入我们的数据库配置信息。数据库配置信息为二维数组结构,默认为default,可以根据default结构配置多个数据库链接(如:extended_1)
    2.路由配置
    路由配置文件位置:caches/configs/route.php
    我们打开这个配置文件,加入我们的路由配置信息。路由配置信息为二维数组结构,默认为default。
    3.系统配置
    系统配置文件位置:caches/configs/system.php

    在控制器中增加模板调用:
    phpcms 可以实现完全的模板与程序分离,所以在我们的控制器程序中要加载模板,才可以更友好的显示出来。
    1.加载前台模板
    前台模板文件在phpcms emplatesdefault模块名称 目录中,本示例也就在phpcms emplatesdefault est中
    加载模板方法如下:
    include template('test', 'mytest', 'default');
    其中 test为模块名称 mytest 为模板目录下模板名称,default为风格名称,默认不填为defalut
    2.加载后台模板
    后台模板文件在phpcmsmodules模块名称 emplates 目录中,本示例也就在phpcmsmodules est emplates 中 加载模板方法如下:
    include $this->admin_tpl('mytest_admin_list');
    其中mytest_admin_list为phpcmsmodules est emplates中mytest_admin_list.tpl.php,注意:此处模板必须以.tpl.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();
      }
     }
    ?>
    注意:
    1.数据库模型类名称必须与文件名称相同;
    2.$this->db_setting = 'default'为数据库配置文件中配置数据库链接池名称,默认为default,一般情况下不需要修改。
    3.$this->table_name = 'test'为数据表名称
    控制器中使用:
    <?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);
        }
      }
    ?>

    模板标签使用:
    常用:
    {pc:get sql="SELECT * FROM phpcms_member" cache="3600" page="$page" dbsource="discuz" return="data"}
    <ul>
    {loop $data $key $val}
    {$val[username]}<br />
    {/loop}
    </ul>
    {$pages}
    {/pc}


    开发流程

    为你的phpcms创建一个模块的一般开发流程是:

    创建数据库和数据表;(没有数据库操作可略过)
    创建模块目录
    创建模块控制器类;
    创建模块类与模块函数;(如果只是简单的模块可以不必创建)
    创建模板文件;
    运行和调试。

  • 相关阅读:
    Freemarker中JS取Data-model的值的问题
    Jquery动态添加元素并给元素增加onchange相应
    [算法] 动态规划
    Linux安装mysql.8.0.12
    Linux命令
    [算法] 并查集
    Flume整合Kafka完成实时数据采集
    Kafka 单节点部署
    Spark Streaming——Flume实例
    Spark实战——日志分析
  • 原文地址:https://www.cnblogs.com/boundless-sky/p/6939531.html
Copyright © 2011-2022 走看看