PHP Dereferencing

0 Cevap php

Ben fonksiyonunun sonuçlarını func($arg)['key'] dereferencing hakkında oldukça okudum ve PHP sonraki (ya da en azından gelecek) sürüme eklenen bahsetmek fark var iken. Ancak ben merak ediyorum (ve terminoloji burada aynı umut) anonim fonksiyonları çözümleyecek. Örneğin:

$val = function($arg){
    return $arg * 2;
}(2);

echo $val; //returns 4;

Ben döndü diziler ve anonim fonksiyonlar için çözümleyecek öykünen bir fonksiyon oluşturduk:

function deref(){
    if(is_array($array = func_get_arg(0))){
        return $array[func_get_arg(1)];
    }
    if(is_callable($function = func_get_arg(0))){
        return call_user_func_array($function, array_slice(func_get_args(), 1));
    }
}

Herkes böyle kapanım durumunu bilen varsa merak ediyorum.

Bir yan not olarak, bu öykünme fonksiyon deref() Ben farketmedim herhangi bir kusurları var mı?


Ben de kendi kendine çağırmak anonim işlevler için bir hackish yaklaşım buldum:

echo ($tmp = function($arg){
        return $arg . 'bar';
    }) ? $tmp('foo') : null;
//foobar

O hala bariz hackishness ötesinde, $tmp gerektirir talihsiz bulunuyor.

0 Cevap