67

How can I check if the function my_function already exists in PHP?

6 Answers 6

131

Using function_exists:

if(function_exists('my_function')){
    // my_function is defined
}
Sign up to request clarification or add additional context in comments.

5 Comments

And if you want to check for methods on classes, most people will recommend method_exists but that detects protected/private methods which aren't externally accessible. In that case is_callable is a better option in general.
@CaseySoftware - For convenience, here's the doc for is_callable, as this answer was a top result on Google.
It's hilarious how semantic and extensive PHP's library is. "how can I tell if a function exists?" "function_exists"
how to check this function if exists? $date = new DateTime(); $date->getTimestamp() ?
if(!function_exists('my_function')) { }
28

http://php.net/manual/en/function.function-exists.php

<?php
  if (!function_exists('myfunction')) {

     function myfunction()
     {
       //write function statements
     }

}
 ?>

Comments

9
var_dump( get_defined_functions() );

DISPLAYS all existing functions

Comments

4

I want to point out what kitchin has pointed out on 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() {}

If you want to prevent a fatal error and define a function only if it has not been defined, you need to do the following:

<?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() {}
} 

Comments

4

And if my_function is in namespace:

namespace MyProject;

function my_function() {
    return 123;
}

You can check if it exists

function_exists( __NAMESPACE__ . '\my_function' );

in the same namespace or

function_exists( '\MyProject\my_function' );

outside of the namespace.

P.S. I know this is a very old question and PHP documentation improved a lot since then, but I believe people still taking a peek here, and this might be helpful.

Comments

1

Checking Multiple 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 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.