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

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. 03-String常用方法

    1.获取方法 /* * 编辑:刘诗华 int length() 获取字符串的长度 char charAt(int index) 获取特定位置的字符 (角标越界) int indexOf(String ...

  2. iOS 结构化数据访问

    一.介绍 在存储大量数据时,除了最基本的打开文件,读取文件,存盘等这些没有明确管理机制的方式来存储数据外,iOS还提供了另外几种重要的数据存储方式.虽然这些方式最后还是将数据存储在文件中,但是iOS以 ...

  3. C# 运用反射把实体类反射成你所想要的格式

    下面是要转换成的Xml格式 <?xml version="1.0" encoding="UTF-8" ?> <NDEML templateVe ...

  4. js控制高度自适应,做到响应式

    //9宫格布局 var prints=window.innerHeight-($('.header').height()+40);//屏幕去掉(头部高度+头部padding) $('.weui-gri ...

  5. 元组,列表的增删改查, for,range 循环

    1. list(增删改查) 列表可以装大量的数据. 不限制数据类型. 表示方式:[] 方括号中的每一项用逗号隔开 列表和字符串一样.也有索引和切片 常用的功能: 1. 增: append() 2. 删 ...

  6. 迭代器 -> 固定的思路. for循环

    一个数据类型中包含了__iter__函数表示这个数据是可迭代的 dir(数据): 返回这个数据可以执行的所有操作 判断迭代器和可迭代对象的方案(野路子) __iter__ 可迭代的 __iter__ ...

  7. 关于CSS3属性transition的触发

    关于怎么触发transition的效果,前面有篇文章说过一次,<关于transition和animation>,而且在实际的项目生产中,也是一直这么使用的,因为明明知道直接添加class是 ...

  8. java 怎样向一个已存在的文件中添加内容

    如果想向某个文件最后添加内容,可使用FileWriter fw = new FileWriter("log.txt",true);在创建FileWriter时加个true就可以了. ...

  9. 设置nginx中文件上传的大小限制度

    通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题: 用nginx来做webserver的时,上传大文件时需要特别注意client_max_body_s ...

  10. JVM Tools

    Java VisualVm 提供可视化界面展示运行在JVM上应用的信息.这些信息可用于诊断剖析应用. Jconsole Jconsole是基于JMX监视工具.Jconsole使用内置的JMX在java ...