Подтвердить что ты не робот

В PHP, как проверить, существует ли функция?

Как проверить, существует ли функция my_function в PHP?

4b9b3361

Ответ 1

Использование function_exists:

if(function_exists('my_function')){
    // my_function is defined
}

Ответ 3

var_dump( get_defined_functions() );

ОТОБРАЖАЕТ все существующие функции

Ответ 4

Я хочу указать, что kitchin указал на php.net:

<?php
// This will print "foo defined"
if (function_exists('foo')) {
  print "foo defined";
} else {
  print "foo not defined";
}
//note even though the function is defined here, it previously was told to have already existed
function foo() {}

Если вы хотите предотвратить фатальную ошибку и определить функцию, только если она не была определена, вам необходимо сделать следующее:

<?php
// This will print "defining bar" and will define the function bar
if (function_exists('bar')) {
  print "bar defined";
} else {
  print "defining bar";
  function bar() {}
} 

Ответ 5

Проверка нескольких function_exists

$arrFun = array('fun1','fun2','fun3');
if(is_array($arrFun)){
  $arrMsg = array();
  foreach ($arrFun as $key => $value) {
    if(!function_exists($value)){
      $arrMsg[] = $value;
    }
  }
  foreach ($arrMsg as $key => $value) {
    echo "{$value} function does not exist <br/>";
  }
}
function fun1(){
}

Output

fun2 function does not exist 
fun3 function does not exist 

Ответ 6

И если my_function находится в пространстве имен:

namespace MyProject;

function my_function() {
    return 123;
}

Вы можете проверить, существует ли он

function_exists( __NAMESPACE__ . '\my_function' );

в том же пространстве имен или

function_exists( '\MyProject\my_function' );

вне пространства имен.

PS Я знаю, что это очень старый вопрос, и с тех пор документация PHP значительно улучшилась, но я верю, что люди все еще заглядывают сюда, и это может быть полезно.