- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在开发一个项目,其中我使用了旧版本中已弃用的函数。但是如果在旧版本中使用,我不希望我的脚本停止。
所以我正在检查该函数是否存在,如果不存在则创建它。
PHP 中function_exists
和is_callable
有什么区别,哪个更好用?
if (!is_callable('xyz')) {
function xyz() {
// code goes here
}
}
或
if(!function_exists('xyz')) {
function xyz() {
// code goes here
}
}
最佳答案
函数is_callable
不仅接受函数名,还接受其他类型的 callbacks :
Foo::方法
array("Foo", "method")
array($obj, "method")
因此 is_callable
接受您可以传递的任何内容 call_user_func
和家人,同时function_exists
仅告知某个函数是否存在(不是方法,参见 method_exists
,也不是闭包)。
换句话说,is_callable
是 zend_is_callable
的包装器,它使用伪类型回调处理变量,而 function_exists
只执行 hash table lookup在函数表中。
关于php - PHP 中的 is_callable 和 function_exists 到底有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3499736/
考虑以下函数对象 l : auto l = [](auto x){ x.foo(); }; 我可以成功static_assert它可以用具有 .foo() 的类型调用成员函数: struct Foo
我有这样定义的 is_callable 特性: #ifndef IS_CALLABLE_HPP #define IS_CALLABLE_HPP #include namespace is_calla
我使用 PHP 5.3,它引入了闭包。因为我现在在我的应用程序(和框架)中都可以使用闭包,所以我使用 is_callable 来查看 $callback 是哪种处理程序。 如果 $callback i
我和我的同事遇到了一些相当奇怪的行为。我们的环境是 Ubuntu 11.10、带有 Suhosin-Patch 的 PHP 5.3.6-13ubuntu3.6 和 Windows 7 PHP 5.3.
我正在开发一个项目,其中我使用了旧版本中已弃用的函数。但是如果在旧版本中使用,我不希望我的脚本停止。 所以我正在检查该函数是否存在,如果不存在则创建它。 PHP 中function_exists 和i
我正在开发一个项目,其中我使用了旧版本中已弃用的函数。但是如果在旧版本中使用,我不希望我的脚本停止。 所以我正在检查该函数是否存在,如果不存在则创建它。 PHP 中function_exists 和i
cppref已删除 std::is_callable 的入口页面, 并使用 std::is_invocable而是进入页面。 但是,std::is_callable在 Visual Studio 20
我是一名优秀的程序员,十分优秀!