【发布时间】:2020-03-11 06:37:40
【问题描述】:
<?php
class Container
{
public $say = 'hi';
}
class Loader
{
public function callSay()
{
echo $this->say;
}
}
$container = new Container;
$run1 = function () {
echo $this->say;
};
$run1->call($container); //hi
$loader = new Loader;
$run2 = function () use ($loader) {
$loader->callSay();
};
$run2->call($container); //Undefined property: Loader::$say
我尝试将 $loader->callSay() 变成一个闭包并将其应用到 $container 但它不起作用。
如何将类中的方法设为闭包,然后将其绑定到另一个类?
【问题讨论】:
-
好吧,加载器中没有 say 成员,除非你想在那里扩展容器,否则它会起作用
-
如果您碰巧不想扩展加载器,则另一种方法是在加载器内实例化容器
-
我认为这是另一回事。提供的职位适用于同一班级。这是不同类之间的应用。 $closure = Closure::fromCallable($run2); $run2->call($container);还是不行……
-
这能回答你的问题吗? PHP binding method to another class