phpcms二次开发之base.php的桥梁作用

PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。

PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。

      入口程序是在前期处理用户请求的引导程序。它是唯一一个可以被最终用户可以直接请求运行的。

PHPCMS框架入口文件base.php:

文件路径:根目录/phpcms/base.php 代码片段如下:

01 <?php
02 define('IN_PHPCMS', true);
03    
04 define('PC_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
05    
06 if(!defined('PHPCMS_PATH')) define('PHPCMS_PATH',PC_PATH.'..'.DIRECTORY_SEPARATOR);
07    
08 define('CACHE_PATH',PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR);
09 ……
10 ?>

 

该文件为框架入口文件,包含实例化系统/模块类方法,调用系统/模块方法,系统常用常量等。如:

     pc_base::load_model('*_model') 加载数据库模型 类

     pc_base::load_sys_class('classname') 实例化系统类

     pc_base::load_app_class('classname’,’admin') 实例化模块类

     pc_base::load_sys_func (‘funcfile’) 调用系统函数库
     
     pc_base::load_sys_func('global','test'); //加载模块函数库(调用test模块的global函数包)


实例化一个应用
文件路径:根目录/index.php

1 <?php
2 define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
3    
4 include PHPCMS_PATH.'/phpcms/base.php';
5    
6 pc_base::creat_app();
7    
8 ?>

 

这段代码首先加载了 phpcms 框架的引导文件 base.php,然后调用其静态方法creat_app()根据指定的配置文件建立了一个 Web 应用实例并运行。


数据库配置文件database.php的调用
文件路径:根目录/caches/configs/database.php

01 <?php
02 defined('IN_PHPCMS'or exit('No permission resources.');
03 class index {
04     public function __construct() {
05    
06      pc_base::load_app_func('global');     
07    
08    $this->db_config = pc_base::load_config('database');
09    
10  ...   
11           
12        }
13    
14     }

 

这段代码首先使用 pc_base::load_app_func()加载了index模块自定义的函数库global.func.php,这样就可以随心所欲地调用global.func.php自定义的函数了。使用pc_base::load_config()静态方法加载了phpcms的数据库配置文件database.php,获取数据库的配置信息,这样可以摆脱PHPCMS框架的局限性,使用原生态的PHP+mysql去进行二次开发。

 

实例化模块类

01 <?php
02    
03 defined('IN_PHPCMS'or exit('No permission resources.');
04    
05 pc_base::load_app_class('admin''admin', 0);
06    
07 class admin_fbteam extends admin {
08    
09 $this->db_config = pc_base::load_config('database');
10    
11 ...
12 }
13 ?>

 

这段代码使用pc_base::load_app_class()方法实例化admin模块的admin.class类。


由此我们知道,不管我们是调用PHPCMS框架里面的系统类或函数库还是调用自定义的模块类或函数库等,我们都可以在base.php里找到需要的调用方法,所以PHPCMS二次开发,弄清base.php里面的静态方法至关重要。

 

本文首发君兰IT博客,欢迎转载!转载请注明本文地址,谢谢。


本文地址:https://www.junlan365.com