<?php

/**
 * Cast class
 * 
 * @author    iltar van der berg
 * @version   1.1
 * @name      Cast
 */

/**
 * Class to Cast var types to another
 */
class Cast
{
	/**
	 * cast to string
	 *
	 * @param mixed $input
	 * @return string
	 */
	static public function string(&$input)
	{
		return $input = (string) sprintf('%s', $input);
	}
	
	/**
	 * cast to integer
	 *
	 * @param mixed $input
	 * @return int
	 */
	static public function int(&$input)
	{
		return $input = (int) sprintf('%d', $input);
	}
	
	/**
	 * cast to float
	 *
	 * @param mixed $input
	 * @return float
	 */
	static public function float(&$input)
	{
		return $input = (float) sprintf('%.F', $input);
	}
	
	/**
	 * cast to scientific
	 *
	 * @param mixed $input
	 * @return double
	 */
	static public function scientific(&$input)
	{
		return $input = (double) sprintf('%.e', $input);
	}
	
	/**
	 * cast to binary
	 *
	 * @param mixed $input
	 * @return int
	 */
	static public function binary(&$input)
	{
		return $input = (version_compare(PHP_VERSION, '6.0.0dev', '>='))
				? (binary) sprintf('%b', $input) 
				: (int) sprintf('%b', $input);
	}
	
	/**
	 * cast to hexadecimal
	 *
	 * @param mixed $input
	 * @return int
	 */
	static public function hexadecimal(&$input)
	{
		return $input = sprintf('%X', $input);
	}
	
	/**
	 * Cast to boolean
	 *
	 * @param mixed $input
	 * @return boolean
	 */
	static public function bool(&$input)
	{
		return $input = (bool) $input;
	}
	
	/**
	 * Cast to array
	 *
	 * @param mixed $input
	 * @return array
	 */
	static public function _array(&$input)
	{
		return $input = (array) $input;
	}
}

?>