@mgsmus dediğini anlayamadım..ornekleyebilir misin..aslında o sorunu soyle aştım..bilmiyorum yanlıs mı yaptım
$this->test(function () use (&$list)
{
$list['foo']='mgsmus';
$list['bar']='sineld';
return $list;
});
//dısardan list dizisini gorebiliyorum
return $list;
şimdi callback icinde diziyi dondurunce..callbackte $list dizisini gorebiliyorum.. okey bu super oldu cunku $this->test methodunu direkt olarak dondurmuyorum..
soyle yapsaydım işime yaramıcaktı...
return $this->test(function () use (&$list)
{
//do something
return
});
//burada liste dizisinin hiç bir anlamı yok cunku callback saglayıcısı test methodu direkt kendini donduruyor..1.ci yaptıgımla listeyi callbackte gorebiliyorum..okey sorun yok...
Şimdi şöyle bir şey yapmak istiyorum :
kod soyle :
$this->redis("name",function($data) use (&$list)
{
$list=$data;
if($data['redis']==false)
{
$data['foo']='mgsmus';
$data['bar']='sineld';
return $data;
}
});
redis methodu soyle :
public function redis($name,$callback)
{
if(is_callable($callback))
{
if($this->redis->exists($name))
{
return call_user_func_array($callback,[['redis'=>true,'ttl'=>$this->redis->ttl($name),'data'=>json_decode($this->redis->get($name),1)]]);
}
else
{
$list=call_user_func_array($callback,['redis'=>false]);
$this->redis->set($name,json_encode($list));
$this->redis->expire($name,$this->expire);
return call_user_func_array($callback,[['redis'=>false,'ttl'=>$this->expire,'data'=>json_decode($this->redis->get($name),1)]]);
}
}
}
yapmak istediğim şu

aslında anladınız ne yapmak istediğimi..
bir encapsulation icindeki dizi değişkenlerini rediste var mı yok mu diye kontrol ediyorum...encapsulation dısında da $list degiskenlerini direkt basıcam
1.sorum : mantık yanlış mı?
2.sorum :
$this->redis("name",function($data) use (&$list)
{
$list=$data;
}
bu sekil yerine
$this->redis("name",function(&$data)
{
}
bu sekil yapamıyorum