In PHP, how do I check if a function exists?

后端 未结 6 1086
挽巷
挽巷 2020-11-30 11:00

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

相关标签:
6条回答
  • 2020-11-30 11:13

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

    <?php
      if (!function_exists('myfunction')) {
    
         function myfunction()
         {
           //write function statements
         }
    
    }
     ?>
    
    0 讨论(0)
  • 2020-11-30 11:16
    var_dump( get_defined_functions() );
    

    DISPLAYS all existing functions

    0 讨论(0)
  • 2020-11-30 11:27

    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 
    
    0 讨论(0)
  • 2020-11-30 11:27

    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.

    0 讨论(0)
  • 2020-11-30 11:32

    Using function_exists:

    if(function_exists('my_function')){
        // my_function is defined
    }
    
    0 讨论(0)
  • 2020-11-30 11:35

    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() {}
    } 
    
    0 讨论(0)
提交回复
热议问题