2012-03-07 3 views
3
$that = $this; 
$closure = function (...) use ($that) { ... }; 

Найдено по: http://css.dzone.com/polls/what-new-feature-php-54Php 5,4 укупорочные

Может кто-то пожалуйста, объясните, что он делает? Предпочтительно с примером.

+0

Угадав, это позволяет функции работать как метод объекта $ this (т. е. иметь доступ к его методам и атрибутам) - что говорят документы php.net? – halfer

+0

Я считаю, что это для анонимных функций: http://il2.php.net/manual/en/functions.anonymous.php – Ynhockey

+0

Вы конкретно спрашиваете о '$ this' /' $ that' или об анонимных функциях? – deceze

ответ

1

, что есть способ, чтобы иметь доступ к методам класса из анонимной функции, определенной в нем. но поскольку заголовок «закрытие php 5.4» вам больше не нужно, это одно из обновлений, сделанных в 5.4, вы можете использовать $ this (без передачи его другой переменной, такой как $ this). вы можете увидеть здесь http://php.net/ChangeLog-5.php, что одно из изменений: «Добавлено закрытие $ этой поддержки назад»

0

Закрытие является анонимной функцией, часто используемой с обратными вызовами. Например:

my_function_with_callback('some-parameter', function() { 
    //Do stuff here 
}); 

переприсваивания означает, что вы можете использовать $ это в anomymous функции, вместо того, чтобы использовать: «использовать ($ Var)», так что, когда вы находитесь в классе:

class MyClass { 
    public function myMethod() { 
     $anon = function() { 
      //$this still refers to MyClass here 
     }; 
    } 
} 

Надеется, что это отвечает на ваш вопрос

Смежные вопросы