Zend - The PHP Company




Text

Add Code


SetFile class, ini-like settings class  

Type: class
Added by: S5o
Entered: 05/11/2000
Last modified: 01/12/2000
Rating: - (fewer than 3 votes)
Views: 5239
Provides a simple ini-type settings file interface. Great for saving and reading variables quick between executions.


<?php if (! defined('lib_ini')) { define('lib_ini'true);

class 
setfile
    
{
    var 
$values;
    var 
$filename;
    
    function 
setfile($filename=false$load=false)
        {
        if (
$filename)
            {
            
$this->filename=$filename;
            return 
$this->read();
            }
        
        }

    function 
write($filename=false)
        {
        if (! 
$filename)
            
$filename=$this->filename;

        if (!isset(
$this->values) && !is_array($this->values))
            return 
false;


        if (!
$f = @fopen($filename'w+'))
            return 
false;
        
        while (! 
flock($fLOCK_EX))
            {
            if (
$ct++ >= 3)
                {
                
// Couldnt get an exclusive lock after 4 seconds, screw it.
                
fclose($f);                
                return 
false;
                }
            
sleep(1);
            }

        foreach(
$this->values as $k => $v)
            {
            
$tw urlencode($k) . '=' urlencode($v) . "rn";
            
fputs($f$twstrlen($tw));
            }

        
fclose($f);
        return 
true;
        }
    
    function 
read($filename=false)
        {
        if (! 
$filename)
            
$filename=$this->filename;

        if (!
$lns = @file($filename))
            return 
false;

        foreach(
$lns as $line)
            {
            list(
$k$v)=explode('='$line);
            
$this->values[urldecode($k)]=urldecode(chop($v));
            }
        return 
true;
        }
    }
}
?>


Usage Example


$f = new setfile('db.cfg', true);
echo $f->values['hostname'];
$f->values['hostname']='somesite.com';
$f->write();


Rate This Script





Search



This Category All Categories