我有以下类结构:
class SomeClass
{
function execute()
{
$value = getValue();
}
function RegisterCallbackHandlers()
{
function ajaxCall()
{
$value = getValue();
}
}
}
函数getValue对它所调用的两个实例都执行相同的操作,但我一次只能让它为一个实例工作。当我把它放在执行中时,它在那里工作。当我把它放在RegisterCallbackHandlers中时,它适用于ajaxCall。
当从ajaxCall和execute调用时,我必须把它放在哪里才能工作?
当您在函数内部声明函数时,该函数不会被封装。
因此,ajaxCall
是一个全局函数,你可以在任何地方调用它,最重要的是,你不能重新声明它
事实上,如果你这样做:
$s = new SomeClass();
$s->RegisterCallbackHandlers();
$s->RegisterCallbackHandlers();
你有
致命错误:无法重新声明ajaxCall()
因此,您应该只调用RegisterCallbackHandlers
一次,这样就不需要在其他任何地方有任何其他声明。
我将getValue函数放在RegisterCallbackHandlers中,并在execute功能中调用它,如下所示:
SomeClass::RegisterCallbackHandlers();
$value = getValue($somNumber);