PHP Classes
Icontem

File: byte_converter.class.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 Ersin Güvenç  >  byte converter class  >  byte_converter.class.php  
File: byte_converter.class.php
Role: Class source
Content type: text/plain
Description: main class
Class: byte converter class
Convert byte counts into KB, MB, GB and TB
 

Contents

Class file image Download
<?php

/**********************************************************************************************************
*
*  byte converter class
*  @filename: byte_converter.class.php
*  Php version PHP5.
*  version: 0.2
*  @author: Ersin Guvenc <eguvenc@gmail.com>  (C) 2008 - 2009.
*  Web: http://develturk.com
*  @license http://opensource.org/licenses/lgpl-license.php GNU Lesser General Public License Version 2.1
*
*/

//some details .. http://en.wikipedia.org/wiki/Byte
//catch all error.. you can customize exception class.look at php5 manual.
//Thanks Leo Venturini for some bugs in version 0.1.  

Class byte_Exception extends Exception 
{
    function 
__toString(){
    return 
__CLASS__ ": [Error]: {$this->getMessage()} [Line]: {$this->getLine()}\n";
    }
}

/* Simple Calculator */
Class calc 
{
private static $meter "1024";
    
//static function compute
    
public static function compute($input,$operator,$iterate){
        switch (
$operator) {
        case 
'*':
            
$total $input self::$meter;
            for(
$i=1$i<=$iterate-1$i++)
            
$total $total self::$meter;
            break;
        case 
'/':
            
$total $input self::$meter;
            for(
$i=1$i<=$iterate-1$i++)
            
$total $total self::$meter;
            break;
        }
        return 
$total;
    }
}

Class 
byte_converter 
{

public $format "";  //incoming format string.
public $toFormat ""//output format string.
public $integer "";  //input number integer.
/* data  types array */
public $type = array('b',      //0  byte
                        
'kb',  //1  kilo
                        
'mb',  //2  mega
                        
'gb',  //3  giga
                        
'tb',  //4  tera
                        
'pb',  //5  peta
                        
'eb',  //6  exa
                        
'zb',  //7  zetta
                        
'yb'); //8  yotta

public $limit ""//calculate limit for data types..
private $result = array();   //auto convert result associative array.


    
function _set_params($integer,$format,$toFormat)
    {
        
$this->integer $integer;
        
$this->format strtolower($format);
        
$this->toFormat $toFormat;
        
//$this->cut_array($this->limit);
    
}

    
//set limit for control the data types..
    
function set_limit($type)
    {
        
$this->limit $type;
    }

    
/* get right operator  */
    
function get_operator()
    {
        if(
$this->get_key($this->format) > $this->get_key($this->toFormat))
        {
            
$operator "*";
            
        }elseif(
$this->get_key($this->format) < $this->get_key($this->toFormat))
        {
            
$operator "/";
        }
        return 
$operator;
    }

    
/* get key type  */
    
function get_key($type)
    {
        
$key array_keys($this->type,$type);
        return 
$key[0];
    }

    
/* start manual convert process*/
    
function convert($integer,$format,$toFormat)
    {
        
$this->_set_params($integer,$format,$toFormat);
        
$iterate $this->get_key($this->format) - $this->get_key($this->toFormat);
        
        if(
$iterate 0)
        
$iterate $iterate * -1//turn to positive
        
        
$operator $this->get_operator();
        return 
calc::compute($this->integer,$operator,$iterate);
    }  
//end convert method
    

    /* cut array function for limit to data types.. */
    
function cut_array($input='')
    {
        if(
$input == "")
        return 
FALSE;
        
        
$key $this->get_key($input);
        
$this->type array_slice($this->type0$key);
    }

     
/* basic array delete. */
    
function array_delete($array,$val)
    {
        if(!
in_array($val,$this->type,true))
        
throw new byte_Exception('This is not an array ! '.__FUNCTION__.' error!');
        
        
$new = array();
        foreach(
$array as $k=>$v)
        {
            if(
is_array($v))
            
throw new byte_Exception('This is not a flat array ! '.__FUNCTION__.' error!');
            
            if(
$val !== $v)
            {
                
$new[$k] = $v;
            }
        }
        
        return 
$new;
    }

    
/* auto convert to another formats it returns associative array */
    
function auto($integer,$format)
    {
    
//get new types except $format
        
$this->cut_array($this->limit);
        
$new_types $this->array_delete($this->type,$format);
        
        
//run auto convert
        
$result = array();
        foreach(
$new_types as $toFormat)
        {
            
//$byte = new byte_converter;
            
$this->result[$toFormat] = $this->convert($integer,$format,$toFormat);
        }
        return 
$this->result;
    }

//end of the byte converter class...


/* EXAMPLE MANUAL CONVERT
try{
$byte = new byte_converter;
$total = $byte->convert("128849018880","b","kb");
echo $total;
}catch(Exception $e) {echo $e;}

//OUTPUT 125829120

/* EXAMPLE AUTO COVERT

try{
$byte = new byte_converter;
$byte->set_limit("tb"); //show types which before the tera byte
$result = $byte->auto("1048576000","kb");
print_r($result);
}catch (Exception $e) {echo $e;}

//OUTPUT

Array (
[b] => 1073741824000
[mb] => 1024000
[gb]=> 1000
//limit
[tb] => 0.9765625
[pb] => 0.000953674316406
[eb] => 9.31322574615E-7
[zb] => 9.09494701773E-10
[yb] => 8.881784197E-13 )
*/
?>

 
  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