gpt4 book ai didi

php - 在 PHP 的函数内定义函数时,有没有办法避免 "redeclared function" fatal error ?

转载 作者:可可西里 更新时间:2023-11-01 00:11:47 26 4
gpt4 key购买 nike

我一直在我的 Wordpress 页面上实现某个插件 (dtabs),但在升级到最新版本后,我发现我现在第二次调用名为 dtab_list_tabs() 的主函数时出现错误

它的工作方式是,插件获得 include_once'd,但无论您想在布局中放置选项卡多少次,都会调用 main 函数。我对 dtab_list_tabs() 有 2 个这样的调用。

现在的问题是,无论出于何种原因,开发人员决定直接在 dtab_list_tabs() 中包含另一个名为 current_tab() 的函数。因为它是在一个函数内声明的,显然 PHP 会在您第二次调用父函数时尝试重新声明它,这对我来说没有任何意义。

PHP Fatal error: Cannot redeclare current_tab() (previously declared in .../wp-content/plugins/dtabs/dtabs.php:1638) in .../wp-content/plugins/dtabs/dtabs.php on line 1638

该修订版的代码位于 http://plugins.svn.wordpress.org/!svn/bc/208481/dtabs/trunk/dtabs.php

我想弄清楚的是是否有办法告诉 PHP 是的......它有一个内部函数,据我所知这是一个完全有效的 PHP 范例,所以不要t 重新声明它并失败。

至于手头的情况,我已经删除了 current_tab(),因为它似乎没有被使用。

最佳答案

您可以使用 function_exists()测试是否已经定义了具有该名称的函数。如果您使定义成为条件 ( if(something) { function foo() {...} } ) php 将仅在满足条件时“评估”定义。

function foo() {
if ( !function_exists('bar') ) {
function bar() {
echo 'bar ';
}
}

bar();
}

foo();
foo();

另请参阅:http://docs.php.net/functions.user-defined

(但我会尽量避免这些事情一起发生)

关于php - 在 PHP 的函数内定义函数时,有没有办法避免 "redeclared function" fatal error ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2304938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com