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

http://css.dzone.com/polls/what-new-feature-php-54のPHP 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 closures"なので、これ以上行う必要はありません。これは5.4で行われた更新の1つです。$ thisを($ thisのような別の変数に渡さずに)使うことができます。ここではhttp://php.net/ChangeLog-5.phpの変更点の1つが「追加閉包$ this support back」

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 
     }; 
    } 
} 

ホープこれはあなたの質問、それに定義された匿名関数からクラスのメソッドへのアクセス権を持っている方法です