note 103080 modified in function.create-function by danbrown

From: Date: Thu, 24 Mar 2011 14:50:35 +0000
Subject: note 103080 modified in function.create-function by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-178166@lists.php.net to get a copy of this message
The following function is very useful for creating an alias of a user function. For built-in functions, it is less useful because default values are not available, so function aliases for built-in functions must have all parameters supplied, whether optional or not. <?php function create_function_alias($function_name, $alias_name) { if(function_exists($alias_name)) return false; $rf = new ReflectionFunction($function_name); $fproto = $alias_name.'('; $fcall = $function_name.'('; $need_comma = false; foreach($rf->getParameters() as $param) { if($need_comma) { $fproto .= ','; $fcall .= ','; } $fproto .= '$'.$param->getName(); $fcall .= '$'.$param->getName(); if($param->isOptional() && $param->isDefaultValueAvailable()) { $val = $param->getDefaultValue(); if(is_string($val)) $val = "'$val'"; $fproto .= ' = '.$val; } $need_comma = true; } $fproto .= ')'; $fcall .= ')'; $f = "function $fproto".PHP_EOL; $f .= '{return '.$fcall.';}'; eval($f); return true; } ?> --was-- The following function is very useful for creating an alias of a user function. For built-in functions, it is less useful because default values are not available, so function aliases for built-in functions must have all parameters supplied, whether optional or not. function create_function_alias($function_name, $alias_name) { if(function_exists($alias_name)) return false; $rf = new ReflectionFunction($function_name); $fproto = $alias_name.'('; $fcall = $function_name.'('; $need_comma = false; foreach($rf->getParameters() as $param) { if($need_comma) { $fproto .= ','; $fcall .= ','; } $fproto .= '$'.$param->getName(); $fcall .= '$'.$param->getName(); if($param->isOptional() && $param->isDefaultValueAvailable()) { $val = $param->getDefaultValue(); if(is_string($val)) $val = "'$val'"; $fproto .= ' = '.$val; } $need_comma = true; } $fproto .= ')'; $fcall .= ')'; $f = "function $fproto".PHP_EOL; $f .= '{return '.$fcall.';}'; eval($f); return true; } http://php.net/manual/en/function.create-function.php

« previous php.notes (#178166) next »