PHP在类的静态方法中调用函数

PHP在类的静态方法中调用函数,php,Php,执行上述代码时,返回对未定义函数的调用myFunction() 请问,关于如何在方法中调用函数有什么想法吗 谢谢在其他函数中定义函数时,请在尝试使用该函数之前将函数移动到 class MainClass { public static function myStaticMethod(){ return myFunction(); function myFunction(){ echo 'hello'; }

执行上述代码时,返回对未定义函数的调用
myFunction()

请问,关于如何在方法中调用函数有什么想法吗


谢谢

在其他函数中定义函数时,请在尝试使用该函数之前将函数移动到

class MainClass {

    public static function myStaticMethod(){
        return myFunction();

        function myFunction(){
            echo 'hello';
        }
    }
}
请注意,重复调用MainClass::myStaticMethod将引发
无法重新声明myFunction()
,除非您管理它

否则,请将其移到课堂之外

class MainClass
{
  public static function myStaticMethod()
  {
    function myFunction()
    {
      echo 'hello';
    }
    return myFunction();
  }
}

MainClass::myStaticMethod(); // No error thrown

也许您应该在调用函数之前定义函数。另外,我不明白为什么你需要在一个类中创建这样的全局函数,你希望做什么?@Scuzzy我认为这不是问题所在。在定义它之前调用它。是的,但嵌套在类或其他函数中时不调用。在这种情况下,我要说的问题是,该方法返回并停止执行;因此,函数永远不会被声明——正如您在回答中所解释的那样。您在静态方法中定义函数的具体原因是什么?因为如果你这样做,它将只在这个方法中可用,这使得函数的使用过时了-你可以只使用它的主体。你是对的。在调用函数之前创建该函数后,它可以工作,但出现了一个错误。我认为在声明之前调用它会引发对未定义函数的错误调用在静态方法中声明了一些变量,我想在函数中使用这些变量,但它会引发错误未定义变量。因此,我猜变量无法从方法解析到函数中,你可以用它来包装,但我真的认为你的实现需要检查。是的,我声明它是全局的,因为它在一个控制器中,我将从其他控制器调用它,模型a
public static function
也可以从任何地方调用,就像您现有的
MainClass::myStaticMethod()
方法一样,可以使用。
function myFunction()
{
  echo 'hello';
}

class MainClass
{
  public static function myStaticMethod()
  {
    return myFunction();
  }
}