(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
get_defined_functions — Lista todas las funciones definidas
Lista todas las funciones definidas.
exclude_disabledSi las funciones deshabilitadas deben ser excluidas del valor de retorno. Este parámetro no tiene efecto a partir de PHP 8.0.0.
Esta característica está OBSOLETA a partir de PHP 8.5.0. Depender de esta característica está altamente desaconsejado.
Retorna un array multidimensional, que contiene la lista de todas las funciones definidas, tanto las funciones internas de PHP como las definidas por el usuario. Los nombres de las funciones internas son accesibles mediante $arr["internal"], y las funciones de usuario son accesibles mediante $arr["user"].
| Versión | Descripción |
|---|---|
| 8.5.0 |
El parámetro exclude_disabled ha sido marcado como obsoleto,
ya que no tiene ningún efecto.
|
| 8.0.0 |
El valor por omisión del argumento exclude_disabled
ha sido cambiado de false a true . Sin embargo, no tendrá
ningún efecto ya que las funciones deshabilitadas se eliminan de la tabla de funciones
en tiempo de compilación.
|
| 7.0.15, 7.1.1 |
El argumento exclude_disabled ha sido añadido.
|
Ejemplo #1 Ejemplo con get_defined_functions()
<?php
function myrow($id, $data)
{
return "<tr><th>$id</th><td>$data</td></tr>\n";
}
$arr = get_defined_functions();
print_r($arr);
?>Resultado del ejemplo anterior es similar a:
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
function foo(&$bar, $big, $small = 1) {}
function bar($foo) {}
function noparams() {}
function byrefandopt(&$the = 'one') {}
$functions = get_defined_functions();
$functions_list = array();
foreach ($functions['user'] as $func) {
$f = new ReflectionFunction($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>
<?php print $count; ?> functions
available on
<?php
print $_SERVER[SERVER_NAME];
?>
(<a href="<?php print $php_host;?>"
target="phpwin">php</a>
version
<?php print phpversion(); ?>)
</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 style="background-color:#999;">
<?php
$arr = get_defined_functions();
foreach($arr as $zeile){
sort($zeile);$s=0;
foreach($zeile as $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($functions as $function){
foreach ($function as $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 />";
}
}
?>