|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2014-05-05 14:57 UTC] johannes@php.net
-Status: Open
+Status: Not a bug
[2014-05-05 14:57 UTC] johannes@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 09:00:01 2025 UTC |
Description: ------------ Hi, Earlier today i was reading about the newly release Facebook Hack Languages and Tools online with this they have added a few new features which are quite interesting. However there was one feature they added which i had already thought of in the past which i thought would be excellent if php had this installed by default. Its literally to check return values of methods and classes in order to check returned values just as easily as you can check input values. I wrote a quick class explaining exactly this. I think it would be useful to have by default in php as i think it would help to trim down php unit testing massively. All this class simple does is allow you to check the response / return value of a function to ensure the correct data type is returned, otherwise it throws an exception. Please review my test script below and tell me what you think? Im sure if this was placed in the core the actual syntax of the call could be shortend to something like return('string', '1234'); or similar. Test script: --------------- <?php class Check { /* description * This class is used to check function return types * /* usage */ //return Check::type('string', $data); /* supported return types is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string */ //set allowed return types public static $types = array('array','bool','callable','double','float','int','integer','long','null','numeric','object','real','resource','scalar','string'); //check return type public static function type($type, $value, $allowNull = false) { //check an allowed type is selected if(!in_array($type, self::$types)) { throw new Exception('return type not listed'); } //check for $allowNull / empty values if($allowNull == true) { if($value == null || $value == false || $value == '') { return $value; } } //prepare method name used to check $function = 'is_'.$type; //check return type if(!$function($value)) {self::error($type, $value);} //return value return $value; } //throw generic error for failed return type public static function error($type = '', $value = '') { $backtrace = debug_backtrace(); $error = 'failed method return type found in '.$backtrace[0]['file'].' at line '.$backtrace[0]['line'].' '; $error .= 'return type expected: '.$type.' - '; $error .= 'actual type returned: '.gettype($value).' - '; $error .= 'containing: '.json_encode($value); throw new Exception($error); } }