...

# [tutorial]How To convert units of measurement from one unit or system to another

is_set
05-29-2010, 07:04 AM
Today i will learn you new way to convert units of measurement from one unit or system to another and we will use simple php class

convert.php [1.66 KB] (http://www.jooria.com/view/file/509/convert.php)
length.php [3.07 KB] (http://www.jooria.com/view/file/509/length.php)
length.xml [808 B] (http://www.jooria.com/view/file/509/length.xml)

now how we can use it?
For example, we can define the relationship between any unit of length by the number of that length per one meter.
1 m = 100 cm
With this ratio – which we can simply write as 100 – we can easily convert from meters to the new units. We can also convert from the unit cm back to meters by inverting the ratio – 1 / 100.The length class makes use of this simple principal. A data file (length.xml) contains information about each unit of measurement – an abbreviation, a full name, and this ratio. When the ‘length’ is constructed, it converts it from the given unit into the SI unit for length – meters.
You can then easily retrieve this length value in any other defined unit type.
Example Use

If you download the source code, it comes with a file “convert.php.” This isn’t part of the class – it just gives you an example of how to implement the class. Here’s a very simple example to show you the syntax for creating a new length instance and converting a value starting in centimeters to inches. \$len = new length(50, 'cm');
echo \$len->getConversion('in') . 'in';
The length constructor takes three arguments – one required and two optional. The first argument is the value of your length (50 in this case). The second parameter is the abbreviation of the unit type (cm). If a unit is not sent, then it is assumed you’re creating a length in meters. The last argument is the path/filename to the “length.xml” data file. It’s assumed to be located in “length.xml” if a path isn’t given.
The constructor then converts that value into the standard unit – meters. getConversion() takes one argument – the new unit type. It takes the stored value (in meters) and returns it converted to the unit type you gave.Extending Length to Include Other UnitsThe data file included with the class is by no means intended to be exhaustive. In fact, it’s pretty limited at the moment. I will probably eventually update it with a more or less complete list of units.
However, it was created to be easily adaptable by the user. You could even make up new imaginary units (for use in a game, maybe). All you need to do is add a new entry to the xml data file with this format.
<unit>
<abbrev>cm</abbrev>
<ratio>100</ratio>
<fullName>centimeters</fullName>
</unit>

firepages
05-29-2010, 07:23 AM
hmmmm personally I think this is a very long way around a simple problem ... assuming you know the ratios, and (again personally) I cant see any reason to use an XML file with its extra overhead where a simple array would suffice, also posted in the wrong section :), will move to snippets if you want.

is_set
05-30-2010, 08:44 AM
yes i think that to
the original programmer made it complex for nothing
yes and move it | you have to move it before ask me because that is your froum