| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- namespace PhpLife\Frame;
- /**
- * 配置文件
- */
- class Config
- {
- protected static $dataFile = ''; // 配置文件目录,绝对路径,json格式,优先使用覆盖$data
- protected static $data = array();
- /**
- * 获取配置信息,
- * 如果配置了$dataFile则读取后者中的数据
- * @param null $section
- * @return mixed
- */
- public static function getData($section = null,$is_pre=FALSE)
- {
- $class = get_called_class();
- // 只读取一次文件
- if ($class::$dataFile) {
- $path = self::getPathByMode($class::$dataFile,$is_pre);
- $class::$data = self::readFile($path);
- $class::$dataFile = '';
- }
- $data = $class::$data;
- if (!is_null($section)) {
- if (isset($data[$section])) {
- return $data[$section];
- } else {
- return null;
- }
- }
- return $data;
- }
- /**
- * 根据后缀读取文件内容并且返回
- * ini 直接解析
- * json 读取后解析,如果解析失败返回空
- * php 文件, include
- * 其他文件 直接读取内容并且返回
- *
- * @param $path
- * @return array | string;
- */
- public static function readFile($path)
- {
- $data = array();
- if (!file_exists($path)) {
- return $data;
- }
- $pathInfo = pathinfo($path);
- $extension = strtolower($pathInfo['extension']);
- if ($extension == 'ini') {
- $data = parse_ini_file($path);
- } elseif ($extension == 'json') {
- $content = file_get_contents($path);
- if (!$content) {
- return $data;
- }
- $content = json_decode($content, true);
- if (!$content) {
- return $data;
- }
- $data = $content;
- unset($content);
- } elseif ($extension == 'php') {
- $data = include($path);
- } else {
- $data = file_get_contents($path);
- }
- return $data;
- }
- /**
- * 根据环境变量$mode获取文件路径
- * @param $filename
- * @return string
- */
- protected static function getPathByMode($filename,$is_pre=FALSE)
- {
- $envPath = dirname(__DIR__) . '/env';
- $mode = Request::getMode();
- switch ($mode) {
- case Request::MODE_ONLINE:
- $path = $envPath.'/product/';
- break;
- }
- if ($is_pre){
- $path.='pre/';
- }
- $filename = $path . ltrim($filename, '/');
- return $filename;
- }
- }
|