2016-08-27 6 views
0

나는 다음과 같은 코드가 있습니다

class Foo { 
    var $callbacks = array(); 
    function __construct() { 
     $this->callbacks[] = function($arg) { 
     return $this->bar($arg); 
     }; 
    } 
    function bar($arg) { 
     return $arg * $arg; 
    } 
} 

내가이 내부 폐쇄를 $ 사용하고 싶습니다, 나는 use ($this)를 추가하려고했지만이 던져 오류 :

Cannot use $this as lexical variable 
+0

어떤 PHP 버전을 사용하고 있습니까? 5.3 이니? – BVengerov

+0

@BVengerov 그렇다면 PHP가 구문 분석 오류를 발생시키는 문제가 있습니다. –

답변

1

당신은 $this을 사용할 수 없습니다. $this으로 복사 한 다음 use 언어 구문에 전달하십시오.

class Foo { 
    var $callbacks = array(); 
    function __construct() { 
     $class = $this; 
     $this->callbacks[] = function($arg) use ($class) { 
     return $class->bar($arg); 
     }; 
    } 
    function bar($arg) { 
     return $arg * $arg; 
    } 
} 
1

가 다른 $이 부여 var와 그것을 사용하십시오. 이 클래스의 인스턴스 자체를 참조 내부의 클래스에 대한 명시 적 예약 변수로

class Foo 
{ 
    public function bar() 
    { 
     $another = $this; 
     return function() use($another) 
     { 
      print_r($another); 
     }; 
    } 
} 
관련 문제