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;
}
...
}
?>
[^] # code de Utils::checkType() et Utils::getParameterType()
Posté par santos . En réponse au message Typage des paramètres d'une fonction. Évalué à 2.
<?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; } ... } ?>