©
本文档使用 PHP中文网手册 发布
(PHP 4 >= 4.0.4, PHP 5, PHP 7)
get_defined_functions — Returns an array of all defined functions
Gets an array of all defined functions.
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).
Example #1 get_defined_functions() example
<?php
function myrow ( $id , $data )
{
return "<tr><th> $id </th><td> $data </td></tr>\n" ;
}
$arr = get_defined_functions ();
print_r ( $arr );
?>
以上例程的输出类似于:
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 ))
[#1] Muneeb Aslam [2015-10-27 00:30:51]
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
$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){
if(strpos($functionName,"_") !== false){
$functionForURL = str_replace("_","-",$functionName);
} else {
$functionForURL = $functionName;
}
echo "<a href='".$url.$functionForURL.".php'>".$functionName."</a><br />";
}
}
?>
[#2] Muneeb Aslam [2015-10-26 19:46:24]
We can also get the function names with this simple foreach
<?php
//Since its a two dimensional array
$functions = get_defined_functions();
//We can use nested foreach to get the function names
foreach($functions as $function){
foreach($function as $thisFunc){
echo $thisFunc . "<br />";
}
}
?>
[#3] kkuczok at gmail dot com [2013-05-22 20:14:13]
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] )
)
[#4] Nguyet.Duc [2011-07-30 13:22:09]
get_defined_functions() just returns a list of function names without function arguments. Here is the code to list user-defined function names plus arguments:
<?php
$content = file_get_contents('example.php');
preg_match_all("/(function )(\S*\(\S*\))/", $content, $matches);
foreach($matches[2] as $match) {
$function[] = "// " . trim($match) . "<br />\n";
}
natcasesort($function);
$functionlist .= "<br />\n";
$functionlist .= "<br />\n\n";
$functionlist .= implode('', $function);
echo $functionlist;
?>
Output:
// add_data($data)
// add_files($list)
// archive($name)
// bzip_file($name)
[#5] rob at webdimension dot co dot uk [2011-04-01 08:48:45]
A quick way of using this function:
<?php
// ALL USER DEFINED FUNCTIONS
$arr = get_defined_functions();
foreach ($arr['user'] as $key => $value){
echo $value.'<br />';
}
// ALL USER DEFINED FUNCTIONS
// ALL INTERNAL FUNCTIONS
$arr = get_defined_functions();
foreach ($arr['internal'] as $key => $value){
echo $value.'<br />';
}
// ALL INTERNAL FUNCTIONS
?>
[#6] ChaosKaizer [2008-07-10 07:13:01]
for user defined function
<?php
function user_func_exists($function_name = 'do_action') {
$func = get_defined_functions();
$user_func = array_flip($func['user']);
unset($func);
return ( isset($user_func[$function_name]) );
}
?>
[#7] strrev xc.noxeh@ellij [2008-06-04 05:31:00]
Please note that functions created with create_function() are not returned.
(However that might change in a later version)
[#8] spudinski at gmail dot com [2008-04-01 06:13:39]
To search for a function.
<html>
<head>
<title>List of all Internal functions</title>
<style type="text/css">
body {
background-color: #FFFFFF;
color: #222222;
font-size: 11px;
font-family: arial, tahoma;
}
table {
color: #222222;
font-size: 11px;
font-family: arial, tahoma;
}
tr.found {
background-color: #66EE00;
font-weight: bold;
}
a:link {
color: #222222;
}
a:visited {
color: #CCCCCC;
}
a:active {
color: #444444;
}
a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<p>
<form method="GET">
Search: <input type="text" name="search"><br>
<input type="submit">
</form>
</p>
<?php
if (!empty($_GET['search'])) {
echo '<p>' . '<a href="#' . $_GET['search'] . '">' .
'Goto ' . $_GET['search'] . '</a>' .
'<script type="text/javascript">
window.onload = function() {
document.location += "#' . $_GET['search'] . '";
return true;
}
</script>
</p>';
}
?>
<p>
<table>
<?php
$country = 'us';
$functions = get_defined_functions();
$functions = $functions['internal'];
$num = 0;
foreach($functions as $function) {
$num++;
echo '<tr ' . (($_GET['search'] == $function) ? 'class="found"' : '') . '><td>' .
number_format($num) . '</td><td>' . '<a name="' . $function . '" href="http://' . $country . '.php.net/' .
$function . '">' . $function . '</a>' . '</td></tr>';
}
?>
</table>
</p>
</body>
</html>
[#9] berchentreff at berchentreff dot de [2006-03-31 05:46:52]
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>
[#10] mIHATESPAMduskis at bates dot edu [2002-11-21 14:47:00]
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.
[#11] peten at spam dot me dot not dot frontiernet dot net [2002-06-02 10:28:51]
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>