2017-03-28 18 views
1

私はクラスがあるとします&コールバックの中からインスタンス変数を設定する必要があります。匿名コールバック内のインスタンス変数にアクセスするPHP

class A{ 
    protected $user; 

    public __construct(){ 
     /* Some function here which accept callback */ 
     StoreData(['name'=>'Stackoverflow'],function($response){ 
      //how to assign value to $user here??? 
     }); 
    } 
} 
+2

'use'キーワードを使用してください。 http://php.net/manual/en/functions.anonymous.php – bassxzero

+0

(?)、? $ userまたは$ this-> user –

+0

と書くと、use($ user)というエラーが表示され、 "変数未定義"となり、使用すると($ this-> user)、 "$ thisを使用できません字句変数として " –

答えて

0

foooooooo 
+0

完了!!!!!!!!!どうして忘れているのですか?$これをオブジェクトとして使用してuse()に渡すことができます。ありがとうございます。< –

+0

あなたのための憎しみは今のところ本当です。 – bassxzero

+0

笑。面白いのは、このメソッドを使用する前にオブジェクト全体を注入したのですが、元のオブジェクトを変更することをテストする前に確信が持てませんでした。 – Rasclatt

0

このようなことはどうですか?あなたが取得します

<?php 
class bug 
    { 
     protected $user; 

     public function test() 
      { 
       $thisObj = $this; 
       goo('test',function() use ($thisObj) { 
        $thisObj->user = 'foooooooo'; 
       }); 

       echo $this->user; 
      } 
    } 

function goo($val,$callback) 
    { 
     $callback(); 
    } 

$bug = new bug(); 
$bug->test(); 

:あなたは変数にオブジェクト全体を割り当て、それによって、オブジェクト(?おそらくこれはあなたが何を意味するかである)を変更use()に注入することができます

class A{ 
    protected $user; 

    public function __construct(){ 
     $this->user = 'hehexd'; 
    } 

    public function getFunction(){ 
     $temp = $this->user; // or a reference 
     $rval = function($response) use ($temp){ 
      echo $temp; 
     }; 

     return $rval; 
    } 
} 

$a = new A(); 
$func = $a->getFunction(); 
$func('response'); 
exit; 
関連する問題