Php 为什么我们需要功能_存在?
为什么我们需要检查用户定义函数的函数_存在?内部或核心PHP函数看起来不错,但若用户自己知道并定义了一个函数,那个么为什么需要检查它的存在呢 下面是自定义的用户定义函数Php 为什么我们需要功能_存在?,php,wordpress,Php,Wordpress,为什么我们需要检查用户定义函数的函数_存在?内部或核心PHP函数看起来不错,但若用户自己知道并定义了一个函数,那个么为什么需要检查它的存在呢 下面是自定义的用户定义函数 if( !function_exists( 'bia_register_menu' ) ) { function bia_register_menu() { register_nav_menu('primary-menu', __('Primary Menu')); } add_actio
if( !function_exists( 'bia_register_menu' ) ) {
function bia_register_menu() {
register_nav_menu('primary-menu', __('Primary Menu'));
}
add_action('init', 'bia_register_menu');
}
感谢使用自动加载程序动态加载的文件,包含函数或类的文件可能没有加载,因此您需要检查它是否存在,因为WordPress的设计非常糟糕,没有任何适当的自动加载模块机制,因此,您需要添加保护措施。想象一下,您使用自己的URL获取函数名并调用它。 那么我们有以下信息: 网址: 将此url转换为函数名时,您可以执行以下操作:
implode('_', $myUrlPart); //my_page
输出为字符串形式的“我的页面”。但如果您立即调用此函数,而函数不存在,则会显示错误。这就是函数_存在的地方,请看:
if (function_exists($function_name)) {
$function_name(); //the function is called
} else {
//call other function to show HTTP 404 page or something like that
}
这会使它更清晰吗?以确保不会两次注册相同的函数,这将导致错误 调用插件中定义的函数时,还可以使用
if(function\u exists('function\u name'))
。如果您停用了插件,您的站点仍将正常运行。在Wordpress StackExchange上澄清了为什么您有时应该在主题中的函数声明周围使用:
if function_exists方法允许子主题通过简单地定义函数本身来覆盖函数定义。由于首先加载子主题的functions.php文件,因此它们将首先定义函数,而不会加载父主题的定义
我认为它类似于面向对象语言中的protected
关键字
然而,我仍然怀疑插件中的函数声明是否需要它。因为如果您尝试定义它两次,您将得到一个error@MarkBaker这就是这个问题的答案,我相信没有那么多“设计拙劣”(尽管在某些地方是这样),更像是“最初是为不能自动完成这类工作的旧PHP版本设计的,从未进行过重构以赶上现代最佳实践”。如果我注册了两次某个函数(在同一个插件或主题中)为了注意并纠正明显的设计缺陷,我不希望出现错误吗?不,WordPress允许您覆盖某些函数,例如,如果您正在制作一个子主题()。