(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
get_defined_functions —Returns an array of all defined functions
Gets an array of all defined functions.
exclude_disabled
Whether disabled functions should be excluded from the return value.
Returns a multidimensional array containing a list of all defined functions, both built-in (internal) and user-defined. The internal functions will be accessible via$arr["internal"], and the user defined ones using$arr["user"] (see example below).
Version | Description |
---|---|
8.0.0 | The default value of theexclude_disabled parameter has been changed fromfalse totrue . |
7.0.15, 7.1.1 | Theexclude_disabled parameter has been added. |
Example #1get_defined_functions() example
<?php
functionmyrow($id,$data)
{
return"<tr><th>$id</th><td>$data</td></tr>\n";
}
$arr=get_defined_functions();
print_r($arr);
?>
The above example will outputsomething similar to:
Array( [internal] => Array ( [0] => zend_version [1] => func_num_args [2] => func_get_arg [3] => func_get_args [4] => strlen [5] => strcmp [6] => strncmp ... [750] => bcscale [751] => bccomp ) [user] => Array ( [0] => myrow ))
You can list all arguments using ReflectionFunction class. It's not necessary to parse selected files/files as suggested by Nguyet.Duc.
http://php.net/manual/pl/class.reflectionfunction.php
Example:
<?php
functionfoo(&$bar,$big,$small=1) {}
functionbar($foo) {}
functionnoparams() {}
functionbyrefandopt(&$the='one') {}
$functions=get_defined_functions();
$functions_list= array();
foreach ($functions['user'] as$func) {
$f= newReflectionFunction($func);
$args= array();
foreach ($f->getParameters() as$param) {
$tmparg='';
if ($param->isPassedByReference())$tmparg='&';
if ($param->isOptional()) {
$tmparg='['.$tmparg.'$'.$param->getName() .' = '.$param->getDefaultValue() .']';
} else {
$tmparg.='&'.$param->getName();
}
$args[] =$tmparg;
unset ($tmparg);
}
$functions_list[] ='function '.$func.' ( '.implode(', ',$args) .' )'.PHP_EOL;
}
print_r($functions_list);
?>
Output:
Array
(
[0] => function foo ( &&bar, &big, [$small = 1] )
[1] => function bar ( &foo )
[2] => function noparams ( )
[3] => function byrefandopt ( [&$the = one] )
)
At least with PHP 4.2.3 on a GNU/Linux/Apache platform, get_defined_functions() returns user-defined functions as all-lower case strings regardless of how the functions are capitalized when they are defined.
Threw me for a loop.
Here's a useful trick with the get_defined_functions function - show all available functions with a link to the documentation (you can even change the mirror it goes to):
<?php
// the php mirror
$php_host="http://us2.php.net/";
// the number of cols in our table
$num_cols=3;
$ar=get_defined_functions();
$int_funct=$ar[internal];
sort($int_funct);
$count=count($int_funct);
?>
<html>
<head>
<title>
Available PHP Functions
</title>
</head>
<body>
<p>
<?phpprint$count;?> functions
available on
<?php
print$_SERVER[SERVER_NAME];
?>
(<a href="<?phpprint$php_host;?>"
>php</a>
version
<?phpprintphpversion();?>)
</p>
<table align="center" border="2">
<tr>
<?php
for($i=0;$i<$count;$i++) {
$doc=$php_host
."manual/en/function."
.strtr($int_funct[$i],"_","-")
.".php";
print" <td><a href=\"".$doc
."\" target=\"phpwin\">"
.$int_funct[$i]
."</a></td>\n";
if(($i>1)
&& (($i+$num_cols)%$num_cols==($num_cols-1)))
print" </tr>\n <tr>\n";
}
for($i=($num_cols-($count%$num_cols));$i>0;$i--)
print" <td> </td>\n";
?>
</table>
</body>
</html>
look at here, list all the defined function on your php-Version and give as well formatted output width links onto the php-manual:
<html><head>
<style type="text/css"><!--
li{font-family:Verdana,Arail,sans-serif;width:500px;margin-top:7px;}
a{padding:4px;}
a.a1{font-size:12px;background-color:#CCCCCC;color:#663300;}
a.a1:hover{background-color:#663300;color:#CCCCCC;}
a.a1:visited{background-color:#fff;color:#999;}
a.a1:visited:hover{background-color:#fff;color:#999;}
a.a0{font-size:12px;background-color:#CCCCFF;color:#663399;}
a.a0:hover{background-color:#663399;color:#CCCCFF;}
a.a0:visited{background-color:#ffC;color:#999;}
a.a0:visited:hover{background-color:#ffC;color:#999;}
--></style>
</head><body>
<?php
$arr=get_defined_functions();
foreach($arras$zeile){
sort($zeile);$s=0;
foreach($zeileas$bzeile){
$s=($s)?0:1;
echo"<li><a class='a".$s."' href='http://de.php.net/".$bzeile."'>".$bzeile."</a></li>";}
}
?>
</body>
</html>
This is rather a simple non-confusing script to get the function names linked to its manual page on php.net. Hope it helps someone. Commented script is self explainatory
<?php
/*declare a variable to php manual of functions.
change the $lng to the region you want it for,
i-e en/es/de etc etc */
$lng="es";
$url="http://www.php.net/manual/".$lng."/function.";
// get defined functions in a variable (it will be a 2D array)
$functions=get_defined_functions();
// Run nested foreach to get the function names
foreach($functionsas$function){
foreach ($functionas$functionName){
/* Since php manual is using hyphens instead of underscores
for functions, we will convert underscores to hyphen whereever
there is one. */
if(strpos($functionName,"_") !==false){
$functionForURL=str_replace("_","-",$functionName);
} else {
$functionForURL=$functionName;
}
/* echo the link */
echo"<a href='".$url.$functionForURL.".php'>".$functionName."</a><br />";
}
}
?>