Как проверить, существует ли функция my_function
в PHP?
В PHP, как проверить, существует ли функция?
Ответ 1
Использование function_exists
:
if(function_exists('my_function')){
// my_function is defined
}
Ответ 2
http://php.net/manual/en/function.function-exists.php
<?php
if (!function_exists('myfunction')) {
function myfunction()
{
//write function statements
}
}
?>
Ответ 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 значительно улучшилась, но я верю, что люди все еще заглядывают сюда, и это может быть полезно.