• [^] # code de Utils::checkType() et Utils::getParameterType()

    Posté par . En réponse au message Typage des paramètres d'une fonction. Évalué à 2.

    Pour ceux que ça intéresse, voilà le code des mes méthodes Utils::checkType() et Utils.getParameterType().
    <?php
    /**
     * Provides a lot of commun functions.
     * 
     * @package Utils
     * @author François NAUTRE<f.nautre@cotep.fr>
     * @date 07/11/2008
     * @version 1.0.0
     * @since 1.0.0
     *
     */
    class Utils
    {
    	/**
    	 * Verifies if some variable is really typed as expected.
    	 *
    	 * @param string $type The expected type.
    	 * @param Object $value The variable to be checked.
    	 * @return boolean true if the specified variable is quite typed.
    	 * @since 1.0.0
    	 */
    	public static function checkType($type, $value, $required=true)
    	{
    		if (!is_string($type))
    		{
    			die ("Utils::checkType : Required type unspecified.");
    		}
    		if ($required AND empty($value))
    		{
    			die ("Utils::checkType : Missing required parameter.");
    		}
    		try
    		{
    			switch($type)
    			{
    				case "string":
    					if (is_string($value))
    					{
    						return true;
    					}
    					break;
    				case "float":
    					if (is_float($value))
    					{
    						return true;
    					}
    					break;
    				case "integer":
    					if (is_int($value))
    					{
    						return true;
    					}
    					break;
    				case "boolean":
    					if (is_bool($value))
    					{
    						return true;
    					}
    					break;
    				case "array":
    					if (is_array($value))
    					{
    						return true;
    					}
    					break;
    				case "resource":
    					if (is_resource($value))
    					{
    						return true;
    					}
    					break;
    				case "object":
    					if (is_object($value))
    					{
    						return true;
    					}
    					break;
    				case "any":
    					if (!empty($value))
    					{
    						return true;
    					}
    					break;
    				default:
    					if ($value instanceof $type)
    					{
    						return true;
    					}
    					break;
    			}
    			trigger_error("Unexpected variable type : expected ".$type." , found ".getType($value));
    		}
    		catch (Exception $e)
    		{
    			die($e);
    		}
    		return false;
    	}
    	/**
    	 * Retrieves type of the specified parameter.
    	 *
    	 * @param ReflectionParameter $parameter The parameter to retrieve his type.
    	 * @return string Name of the required class parameter if the parameter must be an object, NULL otherwise.
    	 * @since 1.0.0
    	 */
    	public static function getParameterType(ReflectionParameter $parameter)
    	{
    		try
    		{
    			$class = $parameter->getClass();
    			$type = empty($class)? null : $class->getName();
    		}
    		catch (Exception $e)
    		{
    			$type = null;
    		}
    		return $type;
    	}
    	...
    	
    }
    ?>