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