Closure::bindTo
  (PHP 5 >= 5.4.0, PHP 7, PHP 8)
Closure::bindTo — 
   Дублирует замыкание и привязывает копию замыкания к объекту и области видимости класса
  
  
 
  Описание
  
  
  
   «Объект привязки» определяет значение переменной $this,
   доступное в теле функции, а «область видимости класса»
   представляет класс, который определяет, какие защищённые
   и закрытые члены класса доступны анонимной функции.
   Анонимная функция увидит те же члены класса, которые видела бы, если бы принадлежала к методам класса,
   который установили как значение параметра newScope.
  
  
   Статические замыкания невозможно привязать к объекту из-за недоступности контекста объекта в статических замыканиях.
   Поэтому в параметр newThis передают значение null при вызове метода на статических замыканиях.
   Но метод всё-таки умеет изменять область видимости класса для статического замыкания.
  
  
   Метод гарантирует, что нестатическое замыкание, которое привязали к экземпляру класса,
   получит доступ к контексту объекта, а без привязки сохранит текущую область видимости.
   Поэтому нестатические замыкания, для которых указали область видимости,
   но вместо объекта в первом аргументе передали null, становятся статическими,
   а для которых не указали область видимости, но установили объект привязки,
   получат доступ только к открытым членам объекта.
  
  Замечание: 
   
    Вместо этого метода пользуются клонированием,
    когда требуется только дублировать анонимную функцию.
   
  
  
 
  Список параметров
  
   
    - newThis
- 
     
      Объект, к которому требуется привязать анонимную функцию,
      или null, если привязка не требуется.
 
- newScope
- 
     
      Название класса, к области видимости которого требуется привязать замыкание,
      или ключевое слово 'static' для сохранения замыканием текущей области видимости.
      При передаче объекта контекст класса определяется типом объекта.
      Параметр определяет видимость защищённых и закрытых членов объекта, к которому привязывается замыкание.
      Нельзя передавать в параметр название или экземпляр объекта внутреннего PHP-класса.
      
 
 
  Возвращаемые значения
  
   Метод возвращает новый объект класса Closure
   или null, если возникла ошибка.
  
  
 
  Примеры
  
   Пример #1 Пример привязки замыкания методом Closure::bindTo()
   
<?php
class A
{
    private $val;
    public function __construct($val)
    {
        $this->val = $val;
    }
    public function getClosure()
    {
        // Метод возвращает замыкание, привязанное к текущим объекту и области видимости
        return function () {
            return $this->val;
        };
    }
}
$ob1 = new A(1);
$ob2 = new A(2);
$cl = $ob1->getClosure();
echo $cl(), "\n";
$cl = $cl->bindTo($ob2);
echo $cl(), "\n";
?>
    
   
 Вывод приведённого примера будет похож на: