What exactly is the difference between the is_callable and function_exists in PHP?

后端 未结 5 1707
长发绾君心
长发绾君心 2021-02-01 01:22

I am working on a project, in which I am using a deprecated function from the older version. But don\'t want my script to stop if used in the older version.

So I am check

5条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-02-01 01:59

    The function is_callable accepts not only function names, but also other types of callbacks:

    • Foo::method
    • array("Foo", "method")
    • array($obj, "method")
    • Closures and other invokable objects (PHP 5.3)

    So is_callable accepts anything that you could pass call_user_func and family, while function_exists only tells if a certain function exists (not methods, see method_exists for that, nor closures).

    Put another way, is_callable is a wrapper for zend_is_callable, which handles variables with the pseudo-type callback, while function_exists only does a hash table lookup in the functions' table.

提交回复
热议问题