在匿名回调PHP中访问实例变量

时间:2017-03-28 17:15:59

标签: php

假设我有一个班级&我必须在回调中设置实例变量。

<g id="dots">
    {data.sites.map((item, i) => {
        return (
            <circle 
                key={i + i + '--'} 
                id={'dot' + (i + 1)} 
                class="cls-2" 
                cx={(180 + item.attributes.address.Longitude) * (1552 / 360)} 
                cy={(90 - item.attributes.address.Latitude) * (818/ 180)} 
                r={
                    item.attributes.Site_Catagories === 'VCP Core' ||
                    item.attributes.Site_Catagories === 'VCP Lab' ? 
                    "5" : "3"
                  }
                alt={item.attributes.title} 
                fill='white'
            />
        )
    })}
</g>

3 个答案:

答案 0 :(得分:0)

这样的事情怎么样?

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;

答案 1 :(得分:0)

您可以将整个对象分配给变量并将其注入use(),从而修改对象(可能这就是您的意思?)

<?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();

你会得到:

foooooooo

答案 2 :(得分:0)

$message = 'hello';

// No "use"
$example = function () {
    var_dump($message);
};
$example();

// Inherit $message
$example = function () use ($message) {
    var_dump($message);
};
$example();

http://php.net/manual/en/functions.anonymous.php