За последние 24 часа нас посетили 20475 программистов и 1102 робота. Сейчас ищут 790 программистов ...

Почему метод bind в замыкании отдает переменную?

Тема в разделе "PHP для новичков", создана пользователем UNSET, 30 янв 2023.

Метки:
  1. UNSET

    UNSET Активный пользователь

    С нами с:
    28 авг 2016
    Сообщения:
    2
    Симпатии:
    0
    Привет.

    PHP:
    1. $fn = function(){
    2.     return ++$this->foo; // increase the value
    3. };
    4.  
    5. class Bar{
    6.     private $foo = 1; // initial value
    7. }
    8.  
    9. $bar = new Bar();
    10.  
    11. $fn1 = $fn->bindTo($bar, 'Bar'); // specify class name
    12. $fn2 = $fn->bindTo($bar,  $bar); // or object
    13. $fn3 = $fn->bindTo($bar, 'Bar'); // specify class name
    14. $fn4 = $fn->call($bar); //
    15.  
    16. echo $fn1(); // 3
    17. echo $fn2(); // 4
    18. echo $fn3(); // 5
    19. echo $fn4; // 2
    $fn1,$fn2,$fn3 - функции/объекты
    Почему они возвращаются, как результат call. Это же объект. И почему начинается с "3", а не "2"?