PHP Classes
Icontem

File: fileStorage.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Emilis Dambauskas  >  fileStorage  >  fileStorage.php  
File: fileStorage.php
Role: Class source
Content type: text/plain
Description: class file
Class: fileStorage
Simple class for keeping data in a file
 

Contents

Class file image Download
<?php
/*****************************************************************************
 * fileStorage: easy to use class for writing and reading serialized data from
 *              and to files
 *****************************************************************************
 * version 1.0 - 2002-09-12 12:15
 *****************************************************************************
 * Copyright (c) 2002, Emilis Dambauskas, emilis@gildjia.lt
 * All rights reserved.
 * This class is licensed under The Artistic license, for more info read 
 * fileStorage.license.txt or go to 
 * http://www.opensource.org/licenses/artistic-license.php
 ****************************************************************************/

/*****************************************************************************
 * HELP:
 * methods:
 * - fileStorage($filename) - contructor
 * - error($msg) - reports an error
 * - read_data() - reads data from file
 * - write_data() - writes data to file
 * - add_data($name, $value) - adds new value into data storage
 * - get_data($name) - gets value from data storage
 * - register_data($name, &$value) - adds reference into data storage
 * - &get_reg_data($name) - gets reference from data storage
 *
 * ATTENTION:
 *   if you want to store data in a file it has to be accessible for writing
 *   by the web server. So you may need to chmod the file and change its
 *   access permissions.
 ****************************************************************************/

/*****************************************************************************
 * EXAMPLE (a simple counter stored in the storage):
 * 
 * // we create new storage and associate it with file mydata.dat:
 * $storage = &new fileStorage('mydata.dat');
 * $storage->read_data();
 * 
 * // try to get counter value from storage
 * $counter = $storage->get_data('counter');
 * 
 * // if counter not found:
 * if (!$counter)
 *    $counter = 1;
 * 
 * // increase counter value:
 * $counter++;
 *
 * // store counter value in the storage:
 * $storage->add_data('counter', $counter)
 * // save storage:
 * $storage->write_data();
 * 
 * 
 ****************************************************************************/

class fileStorage
{
    var 
$fp;
    var 
$filename;
    var 
$data;
    var 
$data_read;
    
    
/**
     * constructor
     *
     * $filename = name of file to use for storing data
     */
    
function fileStorage($filename)
    {
        
$this->filename $filename;
        
$this->data_read FALSE;
        
$this->data = array();
    } 
// end of function fileStore
    
    /**
     * reports an error
     * tip: you ca attach your own error reporting here
     */
    
function error($msg)
    {
        
trigger_error('fileStorage error: '.$msg);
    } 
// end of function error
    
    
    /**
     * checks if file exists
     * if not tries to create it
     */
    
function _check_file()
    {
        if (!
file_exists($this->filename))
                if(!
$this->fp fopen($this->filename'w'))
                        return 
FALSE;
                else
                        
fclose($this->fp);
        return 
TRUE;
    } 
// end of function _check_file
    
    /**
     * reads the file and returns array with data
     */
    
function read_data()
    {
        if (!
$this->_check_file())
        {
            
$this->error('Couldnot open file '.$this->filename.' for reading.');
            return 
FALSE;
        }
                
        
$this->fp fopen ($this->filename'r');
        
$contents fread ($this->fpfilesize ($this->filename));
        
fclose ($this->fp); 
        
$this->data unserialize($contents);
        
$this->data_read TRUE;
        
        return 
$this->data;
    } 
// end of function get_data
    
    /**
     * writes data into the file
     */
    
function write_data()
    {
        if (!
$this->_check_file())
        {
            
$this->error('Couldnot open file '.$this->filename.' for writing.');
            return 
FALSE;
        }
        
        
$store serialize($this->data);
        
$this->fp fopen($this->filename'w');
        
fwrite($this->fp$store);
        
fclose($this->fp);
    } 
// end of function write_data
    
    
    /**
     * adds variable into storage
     */
    
function add_data($name$value)
    {
        if (!
$this->data_read)
                
$this->read_data();
        
        
$this->data[(string) $name] = $value;
    } 
// end of function add_data
    
    /**
     * returns data stored in storage by that name
     */
    
function get_data($name)
    {
        if (!
$this->data_read)
                
$this->read_data();
        
        if (!isset(
$this->data[(string)$name]))
        {
            
$this->error('Data '.$name.' does not exist in the storage');
            return 
FALSE;
        }
        return 
$this->data[(string)$name];
    } 
// end of function get_data
    
    /**
     *
     */
    
function register_data($name, &$value)
    {
        if (!
$this->data_read)
                
$this->read_data();
        
        
$this->data[(string) $name] = &$value;
    }
    
    
/**
     *
     */
    
function &get_reg_data($name)
    {
        if (!
$this->data_read)
                
$this->read_data();
        
        if (!isset(
$this->data[(string)$name]))
        {
            
$this->error('Data '.$name.' does not exist in the storage');
            return 
FALSE;
        }
        return 
$this->data[(string)$name];
    }

// end of class fileStorage

?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products