Php 将静态函数赋值给变量
是否有任何方法可以将静态函数分配给变量,或者以其他方式完成此操作Php 将静态函数赋值给变量,php,Php,是否有任何方法可以将静态函数分配给变量,或者以其他方式完成此操作 class my_class{ public static function my_method($a){ return $a; } } $some_func = my_class::my_method; $someAnonFunc = function($a) use ($some_func){ return $some_func($a); } $inst = new SomeO
class my_class{
public static function my_method($a){
return $a;
}
}
$some_func = my_class::my_method;
$someAnonFunc = function($a) use ($some_func){
return $some_func($a);
}
$inst = new SomeOtherClass(); //Defined somewhere else, in some other file
$inst->someMethod($a, $someAnonFunc);
在这一点上,我得到:
致命错误:未定义的类常量“my_method”
我自己没试过,但试一下
$some_func = 'my_class::my_method';
e、 g.将类/方法指定为字符串
这可能不起作用,但我确实知道:
$x = 'mysql_real_escape_string';
$sql = "INSERT ... VALUES({$x($_GET['post'])})";
是的。丑陋,但有效。我自己没试过,但试一下
$some_func = 'my_class::my_method';
e、 g.将类/方法指定为字符串
这可能不起作用,但我确实知道:
$x = 'mysql_real_escape_string';
$sql = "INSERT ... VALUES({$x($_GET['post'])})";
是的。难看,但很有效。函数在PHP中不是一流的。。字符串是。如果要将::语法作为一个单元来使用,则必须使用call\u user\u func:
$some_func = 'my_class::my_method';
$someAnonFunc = function ($a) use ($some_func) {
return call_user_func($some_func, $a);
}
尝试运行$some_func将不起作用,因为它将冒号视为函数名的一部分。函数在PHP中不是第一类。。字符串是。如果要将::语法作为一个单元来使用,则必须使用call\u user\u func:
$some_func = 'my_class::my_method';
$someAnonFunc = function ($a) use ($some_func) {
return call_user_func($some_func, $a);
}
尝试运行$some_func将不起作用,因为它会将冒号视为函数名的一部分。不确定我是否正确理解您的问题,但您是否正在寻找 您可以使用
call_user_func(array('myclass', 'my_method'), $arg1, $arg2, ...);
不确定我是否正确理解了你的问题,但你在找我吗 您可以使用
call_user_func(array('myclass', 'my_method'), $arg1, $arg2, ...);
你为什么想要这样的东西?您可以在lambda函数中调用静态方法,而不会出现任何问题。$someAnonFunc本身将作为参数传递给另一个类的方法,该类不知道静态方法。我当然可以包括类文件,但在我看来,我的方法更干净,更可重用,如果你想知道的话。好吧,我想JavaScript比PHP更接近函数式语言。。。名称空间不是包含类定义的另一种方式吗?我真的在寻找一种方法,可以从任何地方调用某种指向函数的指针。@BinaryDeuce:JavaScript是一种函数式语言,不接近,这就是为什么你想要这样的东西?您可以在lambda函数中调用静态方法,而不会出现任何问题。$someAnonFunc本身将作为参数传递给另一个类的方法,该类不知道静态方法。我当然可以包括类文件,但在我看来,我的方法更干净,更可重用,如果你想知道的话。好吧,我想JavaScript比PHP更接近函数式语言。。。名称空间不是包含类定义的另一种方式吗?我真的在寻找一种方法,可以从任何地方调用某种指向函数的指针。@BinaryDeuce:JavaScript是一种函数式语言,不接近,这不是我的问题,但我在这里学到了一些东西-感谢:+1,因为函数不是PHP函数式语言的第一类:JavaScript、Lisp、Scheme、Haskell。。。不是PHP、Perl、Java或任何C系列。这是一个很大的区别,人们应该知道+1使用了您的解决方案。必须在第二个类中要求_一次作为第一个类,这不是我的问题,但我在这里学到了一些东西-感谢:+1,因为函数在PHP函数语言中不是第一个类:JavaScript、Lisp、Scheme、Haskell。。。不是PHP、Perl、Java或任何C系列。这是一个很大的区别,人们应该知道+1使用了您的解决方案。在第二节课中,我不得不要求你上第一节课,这是我想避免的,但我做不到