如何使 class 的方法成为 php 中的闭包?

How do I make a method of a class a closure in php?

<?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 但它不起作用。

如何在 class 闭包中创建一个方法,然后将其绑定到另一个 class?

Loader class 的 callSay 方法想要访问 say 属性。 属性 表示不存在。 最简单的方法是创建此 属性 并用您的值填充它。

$run2 = function() use ($loader) {
  $loader->say = $this->say;  
  $loader->callSay();
};