zoukankan      html  css  js  c++  java
  • PHP 之parse_ini_file 函数获取 .env 文件内容

    1. 通过parse_ini_file 函数来获取.env 文件的配置参数。
      [#DB Config]    // 加上中括号表示 【章节名】后面不能直接接 = 会报错
      [DB_USER]root=ooo   // 如果parse_ini_file 第二参数为false,则章节名会被忽略,为true则会作为数组键名返回(即返回多维数组)。设置【章节】 便于管理配置参数,比如mysql,redis。。。
      DB_PASS=root  // 配置参数必须有“=”连接,没有=的会被忽略,#和//在这里都没有注释作用,即便写了也没用,会被作为数组键名。
      DB_USER // 比如这个没加 = 是获取不到这个值的
      [aa] //另一个好处:当parse_ini_file 第二个参数为true 的时候,并且配置了【章节名】那么重复定义的常量都会获取到(这里的ab),如果没有同时设置true 和 章节名, 那么重复的会被覆盖掉,取最后一个值(就是数组相同键名覆盖)
      ab=a
      [bb]
      ab=b
      不加中括号而且没有接=的,都会被忽略,所以可以以这种方法加“注释”。
      mysql // 就相当于注释的作用了,而且parse_ini_file 第二个参数设置为 true 也不会读取到mysql
      DB_USER=root
    2. 读取env文件全局函数(yii框架放在入口文件或者其他能全局的地方。或者配置成助手类的形式):
       1 if (!function_exists('env')) {
       2     function env($name, $file='.env')
       3     {
       4         $path = Yii::$app->basePath;
       5         $filePath = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $file;
       6         $configs = parse_ini_file($filePath, true);
       7         if (empty($configs)) {
       8             die('err: file is empty');
       9         }
      10         // 判断 是否加了注释 # 并且判断是否设置【章节】即是否是二维数组
      11         foreach ($configs as $key => $val) {
      12             if (is_array($val)) {
      13                 foreach ($val as $k => $v) {
      14                     if (substr($k, 0, 1) == '#' || substr($key, 0, 2) == '//') {
      15                         unset($configs[$key][$k]);
      16                     }
      17                     // 如果传了$name 字段,那么根据name获取指定的字段值
      18                     if ($k == $name && !empty($name)) {
      19                         return isset($configs[$key][$k]) ? $configs[$key][$k] : null;
      20                     }
      21                 }
      22             } else {
      23                 if (substr($key, 0, 1) == '#' || substr($key, 0, 2) == '//') {
      24                     unset($configs[$key]);
      25                 }
      26                 // 如果传了$name 字段,那么根据name获取指定的字段值
      27                 if ($key == $name && !empty($name)) {
      28                     return isset($configs[$key]) ? $configs[$key] : null;
      29                 }
      30             }
      31         }
      32         return ($configs) ;
      33     }
      34 }
      env函数

       放在yii 入口文件里 必须放在config 前面,例如

      if (!function_exists('env')) {
          function env($name, $file='.env')
          {
              $path = __DIR__ . '/../'; //在这里还用不了Yii::$app->basePath ,因为还没注册
              $filePath = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $file;
              $configs = parse_ini_file($filePath, true);
              if (empty($configs)) {
                  die('err: file is empty');
              }
              // 判断 是否加了注释 # 并且判断是否设置【章节】即是否是二维数组
              foreach ($configs as $key => $val) {
                  if (is_array($val)) {
                      foreach ($val as $k => $v) {
                          if (substr($k, 0, 1) == '#' || substr($key, 0, 2) == '//') {
                              unset($configs[$key][$k]);
                          }
                          // 如果传了$name 字段,那么根据name获取指定的字段值
                          if ($k == $name && !empty($name)) {
                              return isset($configs[$key][$k]) ? $configs[$key][$k] : null;
                          }
                      }
                  } else {
                      if (substr($key, 0, 1) == '#' || substr($key, 0, 2) == '//') {
                          unset($configs[$key]);
                      }
                      // 如果传了$name 字段,那么根据name获取指定的字段值
                      if ($key == $name && !empty($name)) {
                          return isset($configs[$key]) ? $configs[$key] : null;
                      }
                  }
              }
              return ($configs) ;
          }
      }
      //  必须放在这句之前才有效
      $config = require __DIR__ . '/../config/web.php';  
      yii index.php配置env函数
  • 相关阅读:
    event.keycode大全(javascript) (转)
    Javascript 中的 字符串对象 toUpperCase() toString() charAt() indexOf() lastIndexOf() replace() search() substring()
    Javascript 中的 var
    Javascript 中的 Array
    super() (1)
    Javascript 中的事件
    JavaScript验证函数大全 (转)
    javascript数字验证(转)
    Javascript 中 null 与 undefined关系
    Javascript 中的 for ... in
  • 原文地址:https://www.cnblogs.com/bneglect/p/13498119.html
Copyright © 2011-2022 走看看