Length Class for PHP – Converting Units of Length
The Length Class for PHP is a very simple class. It is designed to help you convert units of measurement from one unit or system to another.
Class/File Setup
I wanted to write a conversion class, but I wanted it to be easily adaptable. Lengths are nice measurements to work with – all of the length conversions are linear.
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 Units
The 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>
- abbrev: This is the abbreviation of your unit type. You use this when passing your unit as a parameter to the constructor or to getConversion().
- ratio: This is an integer or float representing the ratio of your unit to one meter. For example, 100 cm to 1 m.
- fullName: This is just a human readable name that can be retrieved for output purposes if you don’t like using abbreviations.
Good luck. Don’t hesitate to leave a comment if you run into any bugs. This is after all a first release. It’s pretty simple, but I can’t guarantee there are no unintended bugs.
- Source Code: Length Class for PHP
adding virtual memory said this on May 21st, 2010 at 8:28 am
Annonymous, if you have meeting info on Democratic Town Committee by all means email me the info. Thanks