---------------------------------------------------------------------------------------------------

PHPCMS的入口文件index.php里的代码较少,主要做了三件事,如下:

//1.定义PHPCMS根目录(入口文件所在目录),PHPCMS_PATH全局可用
define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR) //2.引入框架入口文件(与入口文件同级的框架目录phpcms中的base.php)
include PHPCMS_PATH.'/phpcms/base.php'; //3.调用框架入口文件中基类pc_base的静态方法create_app(),进行应用程序初始化
pc_base::create_app();

代码虽少,但是将 做了很多事的框架入口文件base.php加载进来后,等于直接就进入了PHPCMS的核心。

---------------------------@chenwei 黑眼诗人 <www.farwish.com>---------------------------

简单说下base.php主要做的事:

1.定义一系列常量,如框架路径,缓存文件夹路径等,全局可用。

2.加载框架自带函数库,全局可用。

3.通过读取配置文件,将配置值定义为常量,全局可用。

4.自带PHPCMS基类(pc_base),定义了加载系统类,应用类,数据模型,系统函数库,应用函数库,插件类库,插件数据模型,配置文件等的方法。

define('CSS_PATH', pc_base::load_config('system', 'css_path'));

上面定义了CSS路径为常量,以便 前后台的全局使用,那它是如何加载配置文件的,如下方法:

    /** 
     * 加载配置文件
     * @param string $file   配置文件
     * @param string $key   要获取的配置键
     * @param string $default 默认配置。当获取配置项目失败时该值发生作用。
     * @param boolean $reload 强制重新加载。
     */
  public static function load_config($file, $key = '', $default = '', $reload = false) { 
static $configs = array();          //# 定义存放配置值的空数组     //-----------------------------------------
if (!$reload && isset($configs[$file])) { //# 如果重新加载 且 设置了$configs[$file](这里不执行)
if (empty($key)) {
return $configs[$file];       //# 如果配置键为空,返回整个配置数组(配置文件以一维数组形式返回,如:return array('a'=>'','b'=>''))
} elseif (isset($configs[$file][$key])) {
return $configs[$file][$key];    //# 如果设置了有配置键的值,返回
} else {
return $default;           //# 默认返回配置default
}
}
    //----------------------------------------- $path = CACHE_PATH.'configs'.DIRECTORY_SEPARATOR.$file.'.php';//# 系统配置文件路径,$path = PHPCMS_PATH.'caches/configs/system.php';
if (file_exists($path)) {
$configs[$file] = include $path;    //# 如果system配置文件存在,引入
} if (empty($key)) {               //# 根据$key取配置值,否则返回default值,同上虚线间代码
return $configs[$file];
} elseif (isset($configs[$file][$key])) {
return $configs[$file][$key];
} else {
return $default;
}
}

所以在使用load_config()时,只需传入配置文件名 和 配置键,即可获取配置值; 一般获取配置项的原理类似。

[PC]PHPCMS配置文件的读取的更多相关文章

  1. properties配置文件的读取和写入

    /** * 类名:PropertiesUtil * 功能:提供对properties配置文件的读取和写入 * @author ChengTao */package com.xy.xyd.rest.bi ...

  2. springcloud的配置文件的读取顺序

    SpringBoot默认支持properties和YAML两种格式的配置文件.前者格式简单,但是只支持键值对.如果需要表达列表,最好使用YAML格式.SpringBoot支持自动加载约定名称的配置文件 ...

  3. [PC]PHPCMS二次开发指南(上)

    ------------------------------------------------------------------------------------- PHPCMS本身功能已经很完 ...

  4. Springboot 之 自定义配置文件及读取配置文件

    本文章来自[知识林] 读取核心配置文件 核心配置文件是指在resources根目录下的application.properties或application.yml配置文件,读取这两个配置文件的方法有两 ...

  5. Springboot 之 自定义配置文件及读取配置文件注意:配置文件中的字符串不要有下划线 .配置中 key不能带下划线,value可以(下划线的坑,坑了我两天..特此纪念)

    注意:配置文件中的字符串不要有下划线 .配置中  key不能带下划线,value可以 错误的.不能读取的例子: mySet .ABAP_AS_POOLED      =  ABAP_AS_WITH_P ...

  6. Feign从配置文件中读取url

    Feign的url和name都是可配置的,就是从配置文件中读取的属性值,然后用占位符引用就可以了: ${rpc.url} @FeignClient(name = "me", url ...

  7. System.ConfigurationManager类用于对配置文件的读取

    http://blog.csdn.net/ligenyingsr/article/details/54095986 System.ConfigurationManager类用于对配置文件的读取.其具有 ...

  8. IT项目中使用 json格式数据 保存项目配置信息, 在配置文件再读取json文件的内容进行赋值

    json格式小巧玲珑,适合做配置文件,特别是大型项目中, 可以将配置信息分类保存到不同的json文件中, 然后再在配置文件中读取配置文件的数据进行赋值, 这里以python为例进行说明: 假设在you ...

  9. 【APS.NET Core】- Json配置文件的读取

    在项目目录下有个 appsettings.json ,我们先来操作这个文件.在appsettings.json中添加以下内容: { "Logging": { "LogLe ...

随机推荐

  1. 4G模块*99#拨号上网

    操作系统:win10 模块型号:quectel EC20 CE FAG 4G模块拨号步骤如下: 1. 打开网络和internet设置 2. 选择“拨号” 3. 选择“设置新连接” 4. 选择“拨号调至 ...

  2. 基于HAProxy+Keepalived高可用负载均衡web服务的搭建

    一 原理简介 1.HAProxyHAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web ...

  3. C,Java,C#数据类型对比总结

  4. win7禁用Adnimistrator账号登录

    开始 运行 输入 lusrmgr.msc 回车. 双击 用户,双击Administrator ,在 账户已禁用 前面打上勾即可.然后确定.

  5. mysql给查询的结果添加序号

    1.法一: select  (@i:=@i+1)  i,a.url from  base_api_resources a  ,(select   @i:=0)  t2 order by a.id de ...

  6. Jquery,全选,反选,

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. 20165205 2017-2018-2 《Java程序设计》第四周学习总结

    20165205 2017-2018-2 <Java程序设计>第四周学习总结 教材学习内容总结 相关概念: 继承:避免多个类间重复定义共同行为 子类与父类: 父类: 对有着共同特性的多类事 ...

  8. mysql数据库创建编码及排序

    编码 utf-8 排序 utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用. utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果 u ...

  9. python2.7 urllib2 爬虫

    # _*_ coding:utf-8 _*_ import urllib2import cookielibimport randomimport refrom bs4 import Beautiful ...

  10. xshell 设置右键粘贴

    1.打开Xshell,单击菜单栏的Tools(工具),选中Options(菜单),进入参数设置界面.. 2. 选择Keyboard and Mouse (键盘和鼠标),把Right-bottox(向右 ...