simple flatfile DB class

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • simple flatfile DB class

    its a simple flatfile Class for Managinig contents of Files
    Code:
    <?php
    //developed by shushant
    //created on 28/11/2012
    //version v 0.1
    
    //namespace FlatFile;
    
    class DB {
    
    const PRESERVE = false;
    public static $getFile = null;
    public static $getLines = array();
    
     public function __construct ($file){
             self::$getFile = $file;
             //new self();
             self::$getLines = self::getIdLinesByFile ($file);
      }
    public function __destruct() {
               self::$getLines = NULL;
               self::$getFile = array();
      }
    
       public static function getIdLinesByFile ($file){
    
              return explode ( "\n" , file_get_contents ($file));
    
      }
    
       public function getAppendLine ($i, array $array){
         $this->getChange(array_splice (self::$getLines, $i, 0, $array), DB::PRESERVE);
      }
    
    
       public function getChange($text, $preserve = true) {
    
              if (!$preserve) {
                 // self::$getLines [$this -> getCount () + 1] = $text;
                 $temp  = self::$getLines;
                 $temp [$this -> getCount () + 1] = $text;
             }
          else $temp = $text;
    
            $fh = @fopen(self::$getFile, 'w');
           if (flock ($fh, LOCK_EX)) {
               fwrite ($fh, implode ( "\n" , $temp));
               flock ($fh, LOCK_UN);
               //self::getIdLinesByFile (self::$getFile);
    //           self::$getLines = (array)$temp;
               return 1;
            }
             fclose ($fh); unset ($temp); //free up the resources
             return 0;
        }
    
       public function getOutput() {
          $i = 0;
          foreach (self::getIdLinesByFile (self::$getFile) AS $id) {
                echo 'Line no '.$i.' => '.htmlspecialchars ($id) . "\n";
          $i++;
           }
        }
    
     public function getCount() {
          return count (self::$getLines);
    }
    
    public function getBetween($start = 1, $stop = 5) {
    
      for ($i = $start; $i < $stop; $i++) {
              $res [] = self::$getLines [$i];
     }
    
         return $res; unset ($res);
     }
    
       public static function setLines ($lines)
       {
          self::$getLines = (array)$lines;
          $this->getChange (self::$getLines, DB::PRESERVE);
       }
       
       public function &setLinesFromArray ($lines)
       {
    
            $LinesById [] = array();
          foreach($lines as $line)
          {
             $LinesById [] = (array) $lines;
          }
          self::setLines ($LinesById);
       }
    
      public function &setLineByIdLine ($i, $replace)
      {
          self::$getLines [$i] = $replace;
          $this->getChange (implode ( "\n", self::$getLines), DB::PRESERVE);
    
      }
    }
    
        $db = new DB('file.txt');
        $db -> getChange ('Hi Whats up its a test file', DB::PRESERVE);
        $db -> getChange ('Thats another one', DB::PRESERVE);
        $db -> getChange ('Once again Thats another one', DB::PRESERVE);
      //this will override contents of previously created file
      //$db -> getChange ('Once again Thats another one yo !');
    // this will fetch array b/w required pos
    //    print_r ( $db->getBetween (0, 3));
    
    //  this will change value of key num
    $db->setLineByIdLine (1 ,'Line One Changed');
    
    //  append array from position
    $db -> getAppendLine (1 ,array('Append','Append2'));
    
       echo "\n Count ".$db -> getCount () . "\n"; 
        /*
    create file from array
    $db->setLineFromArray(
            array('New One',
                   'Another One',
                   'Thats Hide One',
                  ));
    */
         $db->getOutput ();
    Last edited by shushant; 28.11.12, 10:16.
Working...
X