Source for file jIniFile.class.php

Documentation is available at jIniFile.class.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage utils
  5. @author     Loic Mathaud
  6. @contributor Laurent Jouanneau
  7. @copyright  2006 Loic Mathaud, 2008-2012 Laurent Jouanneau
  8. @link        http://www.jelix.org
  9. @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  10. */
  11.  
  12. /**
  13. * utility class to read and write an ini file
  14. @package    jelix
  15. @subpackage utils
  16. @since 1.0b1
  17. */
  18. class jIniFile {
  19.  
  20.     /**
  21.      * read an ini file
  22.      * @param string $filename the path and the name of the file to read
  23.      * @return array the content of the file or false
  24.      */
  25.     public static function read($filename{
  26.         if file_exists ($filename) ) {
  27.             return parse_ini_file($filenametrue);
  28.         else {
  29.             return false;
  30.         }
  31.     }
  32.  
  33.     /**
  34.      * write some data in an ini file
  35.      * the data array should follow the same structure returned by
  36.      * the read method (or parse_ini_file)
  37.      * @param array $array the content of an ini file
  38.      * @param string $filename the path and the name of the file use to store the content
  39.      * @param string $header   some content to insert at the begining of the file
  40.      */
  41.     public static function write($array$filename$header=''{
  42.         $result='';
  43.         foreach ($array as $k => $v{
  44.             if (is_array($v)) {
  45.                 $result.='['.$k."]\n";
  46.                 foreach($v as $k2 => $v2){
  47.                     $result .= self::_iniValue($k2,$v2);
  48.                 }
  49.             else {
  50.                 // we put simple values at the beginning of the file.
  51.                 $result self::_iniValue($k,$v).$result;
  52.             }
  53.         }
  54.  
  55.         if ($f @fopen($filename'wb')) {
  56.             fwrite($f$header.$result);
  57.             fclose($f);
  58.         else {
  59.             // jIniFile is used by the configs compiler. There is no configuration
  60.             // object in that case. we need to generate an error without using jLocale
  61.             if(jApp::config()){
  62.                 throw new jException('jelix~errors.inifile.write.error'array ($filename));
  63.             }else{
  64.                 throw new Exception('(24)Error while writing ini file '.$filename);
  65.             }
  66.         }
  67.     }
  68.  
  69.     /**
  70.      * format a value to store in a ini file
  71.      * @param string $value the value
  72.      * @return string the formated value
  73.      */
  74.     static private function _iniValue($key$value){
  75.         if(is_array($value)) {
  76.             $res '';
  77.             foreach($value as $v)
  78.                 $res.=self::_iniValue($key.'[]'$v);
  79.             return $res;
  80.         else if ($value == ''
  81.                   || is_numeric($value)
  82.                   || (preg_match("/^[\w-.]*$/"$value&& strpos("\n",$value=== false)) {
  83.             return $key.'='.$value."\n";
  84.         else if($value === false{
  85.             return $key."=0\n";
  86.         else if($value === true{
  87.             return $key."=1\n";
  88.         else {
  89.             return $key.'="'.$value."\"\n";
  90.         }
  91.     }
  92. }

Documentation generated on Wed, 04 Jan 2017 22:55:08 +0100 by phpDocumentor 1.4.3