PHPのお勉強!

PHP TOP

get_defined_functions

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

get_defined_functions定義済みの全ての関数を配列で返す

説明

get_defined_functions(bool $exclude_disabled = true): array

すべての定義済み関数を配列で返します。

パラメータ

exclude_disabled

無効な関数を戻り値から除外するかどうかを指定します。

戻り値

この関数は、組込 (内部) 関数およびユーザー定義関数を共に含む定義済み の全ての関数のリストを有する多次元配列を返します。内部関数は、 $arr["internal"]、ユーザー定義関数は $arr["user"] によりアクセス可能となります (以下の例を参照ください)。

変更履歴

バージョン 説明
8.0.0 exclude_disabled のデフォルト値が、 false から true に変更されました。
7.0.15, 7.1.1 exclude_disabled パラメータが追加されました。

例1 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);
?>

上の例の出力は、 たとえば以下のようになります。

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
        )

)

参考

add a note

User Contributed Notes 5 notes

up
15
kkuczok at gmail dot com
11 years ago
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] )

)
up
10
mIHATESPAMduskis at bates dot edu
22 years ago
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.
up
6
peten at spam dot me dot not dot frontiernet dot net
22 years ago
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>&nbsp;</td>\n";
?>
</table>
</body>
</html>
up
5
berchentreff at berchentreff dot de
18 years ago
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>
up
2
Muneeb Aslam
9 years ago
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 />";
}
}

?>
To Top