Available PHP Functions

Список функций php файла

Внутренние функции находятся в индексе internal , тогда как пользовательская функция указана в индексе user .
Обратите внимание, что это выведет все функции, которые были объявлены ранее этого вызова. Это означает, что если вы include() файлы с функциями, они также будут в списке. Невозможно отделить функции за каждый файл, кроме того, что вы не include() ни один файл перед вызовом get_defined_functions() . Если у вас должен быть список функций для каждого файла, следующий попытается выполнить, чтобы получить список функций, проанализировав исходный код.

function get_defined_functions_in_file($file) $source = file_get_contents($file); 
$tokens = token_get_all($source);

$functions = array();
$nextStringIsFunc = false;
$inClass = false;
$bracesCount = 0;

foreach($tokens as $token) switch($token[0]) case T_CLASS:
$inClass = true;
break;
case T_FUNCTION:
if(!$inClass) $nextStringIsFunc = true;
break;

case T_STRING:
if($nextStringIsFunc) $nextStringIsFunc = false;
$functions[] = $token[1];
>
break;

// Anonymous functions
case '(':
case ';':
$nextStringIsFunc = false;
break;

// Exclude Classes
case ' if($inClass) $bracesCount++;
break;

case '>':
if($inClass) $bracesCount--;
if($bracesCount === 0) $inClass = false;
>
break;
>
>

return $functions;
>

Вы можете использовать функцию get_defined_functions() , чтобы получить все определенные функции в текущем script.
Смотрите: http://www.php.net/manual/en/function.get-defined-functions.php
Если вы хотите получить функции, определенные в другом файле, вы можете попробовать http://www.php.net/token_get_all следующим образом:

$arr = token_get_all(file_get_contents('anotherfile.php'));

Затем вы можете выполнить цикл, чтобы найти маркеры функций с определенными символами. Список токенов можно найти http://www.php.net/manual/en/tokens.php

Вы можете использовать get_defined_functions() до и после включения файла и посмотреть, что добавляется в массив во второй раз. Поскольку они выглядят в порядке определения, вы можете просто использовать индекс следующим образом:

 $functions = get_defined_functions(); 
$last_index = array_pop(array_keys($functions['user']));
// Include your file here.
$functions = get_defined_functions();
$new_functions = array_slice($functions['user'], $last_index);

Если вы не беспокоитесь о том, чтобы поймать некоторые прокомментированные, это может быть самым простым способом:

preg_match_all('/function (\w+)/', file_get_contents(__FILE__), $m);
var_dump($m[1]);

Хорошо, зачем вам это нужно, я показываю вам:
Файл-пример: Functions.php(я только что написал какое-то случайное дерьмо, это не Mather, он работает со всем)

  

// gewoon een ander PHP скрипт. door het gebruiken van meerdere includes kun je gemakkelijk samen aan één app werken

function johannes($fnaam, $mode, $array)

switch ($mode) case 0:
echo "







he johannes!

klik hier voor random text:



";
break;
case 1:
echo "bouw formulier";
break;
case 2:
echo "verwerk formulier";
break;
default:
echo "[Error: geen mode gedefinieerd voor functie '$fnaam'!]";
>
>

function randomding($fnaam, $mode, $array)

$randomar = array('He pipo wat mot je!','bhebhehehehe bheeeee. rara wie ben ik?','poep meloen!','He johannes, wat doeeeeee je? ','knopje de popje opje mopje','abcdefghijklmnopqrstuvwxyz, doe ook nog mee','Appien is een **p. hahhahah



hahaha','Ik weet eiegelijk niks meer te verzinnen','echt ik weet nu niks meer','nou oke dan[[][(!*($@#&*$*^éäåðßð','he kijk een microboat:
microboat');

$tellen = count($randomar);
$tellen--;

$rand = rand(0, $tellen);

echo $randomar[$rand];
>

function watdoetjho($fnaam, $mode, $array)

$dit = $array['doen'];
echo "Johannes is: $dit";

>

?>

    johannes
    randomding
    watdoetjho
    Количество
    рэнд
    334 (Список всех объявленных пользователем функций)
    307 (Список всех имен функций)
 error_reporting(E_ALL ^ E_NOTICE); // Or we get these undefined index errors otherwise use other method to search array

// Get the file and get all PHP language tokens out of it
$arr = token_get_all(file_get_contents('Functions.php'));

//var_dump($arr); // Take a look if you want

//The array where we will store our functions
$functions = array();

// loop trough
foreach($arr as $key => $value)

//filter all user declared functions
if($value[0] == 334) //Take a look for debug sake
//echo $value[0] .' -|- '. $value[1] . ' -|- ' . $value[2] . '
';

//store third value to get relation
$chekid = $value[2];
>

//now list functions user declared (note: The last chek is to ensure we only get the first peace of information about the function witch is the function name, else we also list other function header information like preset values)
if($value[2] == $chekid && $value[0] == 307 && $value[2] != $old)

// just to see what happens
echo $value[0] .' -|- '. $value[1] . ' -|- ' . $value[2] . '
';
$functions[] = $value[1];
$old = $chekid;
>
>
?>

307 -|- johannes -|- 5
307 -|- randomding -|- 31
307 -|- watdoetjho -|- 43

Я написал эту маленькую функцию, чтобы вернуть функции в файл.
https://gist.github.com/tonylegrone/8742453
Он возвращает простой массив всех имен функций. Если вы вызываете его в конкретном файле, который вы хотите сканировать, вы можете просто использовать следующее:
$functions = get_functions_in_file(__FILE__);

$funcs = get_defined_functions()["user"];

require_once 'myFileWithNewFunctions.php'; // define function testFunc() <> here

var_dump( array_values( array_diff(get_defined_functions()["user"], $funcs) ) )
// output: array[ 0 => "test_func"]

foreach($funcsDiff AS $newFunc) $func = new \ReflectionFunction($newFunc); 
echo $func->getName(); // testFunc
>
$functions = get_defined_functions();
print_r($functions['user']);

Источник

get_defined_functions

Whether disabled functions should be excluded from the return value.

Return Values

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).

Changelog

Version Description
8.0.0 The default value of the exclude_disabled parameter has been changed from false to true .
7.0.15, 7.1.1 The exclude_disabled parameter has been added.

Examples

Example #1 get_defined_functions() example

function myrow ( $id , $data )
return «

$id $data

\n» ;
>

The above example will output something 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 ) )

See Also

  • function_exists() — Return true if the given function has been defined
  • get_defined_vars() — Returns an array of all defined variables
  • get_defined_constants() — Returns an associative array with the names of all the constants and their values
  • get_declared_classes() — Returns an array with the name of the defined classes

User Contributed Notes 11 notes

You can list all arguments using ReflectionFunction class. It’s not necessary to parse selected files/files as suggested by Nguyet.Duc.

Example:
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] )

[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.

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):

// 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 );
?>


functions
available on
print $_SERVER [ SERVER_NAME ];
?>
( »
target=»phpwin»>php
version
)

for( $i = 0 ; $i < $count ; $i ++) $doc = $php_host
. «manual/en/function.»
. strtr ( $int_funct [ $i ], «_» , «-» )
. «.php» ;
print »

\n» ;
if(( $i > 1 )
&& (( $i + $num_cols )% $num_cols ==( $num_cols — 1 )))
print «

\n

\n» ;
>
for( $i =( $num_cols -( $count % $num_cols )); $i > 0 ; $i —)
print »

\n» ;
?>

. «\» target=\»phpwin\»>»
. $int_funct [ $i ]
. «
 


Please note that functions created with create_function() are not returned.
(However that might change in a later version)

look at here, list all the defined function on your php-Version and give as well formatted output width links onto the php-manual:

To search for a function.


Search:

if (!empty( $_GET [ ‘search’ ])) echo ‘

‘ . ‘. $_GET [ ‘search’ ] . ‘»>’ .
‘Goto ‘ . $_GET [ ‘search’ ] . » .

‘ ;
>
?>

$country = ‘us’ ;
$functions = get_defined_functions ();
$functions = $functions [ ‘internal’ ];
$num = 0 ;
foreach( $functions as $function ) $num ++;
echo ‘

‘ ;
>
?>

‘ .
number_format ( $num ) . ‘
‘ . ‘. $function . ‘» href http://» rel=»nofollow» target=»_blank»>http://’ . $country . ‘.php.net/’ .
$function . ‘»>’ . $function . » . ‘


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

/*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 ;
>

Источник

Get a list of all available functions with PHP

PHP has the function get_defined_functions() which allows you to get a list of all the available system and user defined functions in an array. This post looks at how to use the get_defined_functions() function, the output from it and how to sort the list into alphabetical order.

Using get_defined_functions()

get_defined_functions() returns an array containing two keys: ‘internal’ and ‘user’. Each key contains a sub array containing a complete list of the available internal/system functions and the user defined functions respectively.

The following example illustrates this (the examples below assume we have two user defined functions called foo() and bar()):

print_r(get_defined_functions());

and an extract of the result:

Array ( [internal] => Array ( [0] => zend_version [1] => func_num_args [2] => func_get_arg [3] => func_get_args [4] => strlen [5] => strcmp . [1274] => xmlwriter_write_dtd_attlist [1275] => xmlwriter_output_memory [1276] => xmlwriter_flush ) [user] => Array ( [0] => foo [1] => bar ) )

Sorting the result into alphabetical order

If you want to sort the list of functions into alphabetical order, you could do this instead:

$functions = get_defined_functions(); sort($functions['internal']); sort($functions['user']); print_r($functions);

and an extract of the result:

Array ( [internal] => Array ( [0] => _ [1] => abs [2] => acos [3] => acosh [4] => addcslashes [5] => addslashes . [1274] => zend_logo_guid [1275] => zend_version [1276] => zlib_get_coding_type ) [user] => Array ( [0] => bar [1] => foo ) )

Conclusion

The get_defined_functions() function is a great way of getting a complete list of functions that are available on your install of PHP and from your own and 3rd party PHP libraries.

Источник

Читайте также:  Checking null object in javascript
Оцените статью