从函数中调用函数


calling a function from within a function

我有以下类结构:

class SomeClass
{
    function execute()
    {
        $value = getValue();
    }
    function RegisterCallbackHandlers()
    {
        function ajaxCall()
        {
            $value = getValue();
        }
    }
}

函数getValue对它所调用的两个实例都执行相同的操作,但我一次只能让它为一个实例工作。当我把它放在执行中时,它在那里工作。当我把它放在RegisterCallbackHandlers中时,它适用于ajaxCall

当从ajaxCallexecute调用时,我必须把它放在哪里才能工作?

当您在函数内部声明函数时,该函数不会被封装。

因此,ajaxCall是一个全局函数,你可以在任何地方调用它,最重要的是,你不能重新声明它

事实上,如果你这样做:

$s = new SomeClass();
$s->RegisterCallbackHandlers();
$s->RegisterCallbackHandlers();

你有

致命错误:无法重新声明ajaxCall()

因此,您应该只调用RegisterCallbackHandlers一次,这样就不需要在其他任何地方有任何其他声明。

我将getValue函数放在RegisterCallbackHandlers中,并在execute功能中调用它,如下所示:

SomeClass::RegisterCallbackHandlers();
$value = getValue($somNumber);