Php 从函数中调用函数
我的班级结构如下:Php 从函数中调用函数,php,Php,我的班级结构如下: class SomeClass { function execute() { $value = getValue(); } function RegisterCallbackHandlers() { function ajaxCall() { $value = getValue(); } } } 函数getValue对它调用的两个实例都执
class SomeClass
{
function execute()
{
$value = getValue();
}
function RegisterCallbackHandlers()
{
function ajaxCall()
{
$value = getValue();
}
}
}
函数getValue对它调用的两个实例都执行相同的操作,但我一次只能让它为一个实例工作。当我把它放在执行中时,它在那里工作。当我把它放在注册表调用backhandlers中时,它适用于ajaxCall
我必须把它放在哪里,以便在从ajaxCall和从execute调用时它可以工作?当您在函数中声明函数时,此函数不会被封装 因此,
ajaxCall
是一个全局函数,您可以在任何地方调用,最重要的是,您不能重新声明它
事实上,如果你这样做:
$s = new SomeClass();
$s->RegisterCallbackHandlers();
$s->RegisterCallbackHandlers();
你有
致命错误:无法重新声明ajaxCall()
因此,您应该只调用一次
RegisterCallbackHandlers
,这样就不需要在其他任何地方进行任何其他声明。我将getValue函数放在RegisterCallbackHandlers函数中,并在execute函数中调用它,如下所示:
SomeClass::RegisterCallbackHandlers();
$value = getValue($somNumber);
不要在函数中定义函数——如果第二次调用父函数,将出现致命错误“无法重新声明…”执行函数在pageload上执行,RegisterCallbackHandlers函数包含用于来自页面的ajaxcalls调用的函数,这是在我使用的框架上。RegisterCallbackHandler永远不会被调用两次,包含的函数只用于ajaxcalls。这只是一个示例。如果一次调用
RegisterCallbackHandlers
,则不需要重新声明ajaxCall
函数,因为它已经声明了