Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将函数作为参数传递给类';s局部变量_Php - Fatal编程技术网

Php 如何将函数作为参数传递给类';s局部变量

Php 如何将函数作为参数传递给类';s局部变量,php,Php,如何将函数作为param传递给类,然后将其分配给本地类的var 这是我的设想,这能解决吗 需要: return $this->var($x); 我想你把这里的事情弄糊涂了。从代码中,您只需将变量的地址(包含字符串“mathm”作为其值)传递给类a的构造函数。引用被保存到实例变量$var(仍然带有字符串值)。然后在您的checkit()中,您试图将值('mathm')当作函数来使用。函数mathm()正常存在,但不在类别A的范围内。因此类a对任何名为mathm的函数的位置一无所知。这就

如何将函数作为param传递给类,然后将其分配给本地类的var

这是我的设想,这能解决吗


需要:

return $this->var($x);

我想你把这里的事情弄糊涂了。从代码中,您只需将变量的地址(包含字符串“mathm”作为其值)传递给
类a的构造函数
。引用被保存到实例变量
$var
(仍然带有字符串值)。然后在您的
checkit()
中,您试图将值('mathm')当作函数来使用。函数
mathm()
正常存在,但不在
类别A
的范围内。因此
类a
对任何名为
mathm
的函数的位置一无所知。这就是错误

如果插入代码行
print\r($this->var)
checkit()
中,您将看到输出是一个简单的字符串,而不是函数或函数引用

您可以使用闭包a.k.a匿名函数来传递函数。或者,您可以创建一个包含函数
mathm
的类,然后传递该类的实例以在类a中使用


我希望这有帮助

应该是
$this->var
(缺少
)顺便说一句,如果你想要一个变量(
&
)的引用传递给一个方法/函数(这里不需要),你应该在你的签名(
\u构造(&$fun){/code>而不是在调用(
新的(&$mth)
我会尝试
$fun=$this->var;返回$fun($x);
因为我一点也不信任PHP解析器。编辑$this->var sorry typo!@melpomene,它工作得很好,但我想知道是否应该在类中的每个函数中使用该方法?
return $this->var($x);