2016-08-12 10 views
1

を返し実行することはできません私はこのsyntaxeと機能を持っている:私は関数は、変数PHPで

$variable() 

でその機能を実行することはできません

$variable = function() { 
    return function(){ 
     //code 
    } 
} 

は、この関数を実行する方法はあります?

+0

が何を言っているのです(PHP7中)

$res = $variable(); // res stores an inner function $res(); 

か?理解できない。 –

+0

それはあなたが話している内外の機能ですか? –

+2

内部関数... –

答えて

5

私はそれが何のために知っている...しかし、ここでの例はありません。

$a = function() { 
    return function() { 
     return 1; 
    }; 
}; 
$b = $a(); 
echo $b(); 
+7

またはPHP7 '$ b = $ a()()'を呼び出していません。 –

+0

ああ、ありがとう。それはより簡単で短くなります。 –

+0

ありがとう! ^^ –

0

機能が戻っていると、それは、エコーを使用して、呼び出しが何もしていません。

echo $variable(); 

私は分かりやすくするために別の機能を持つことをお勧めします。

$variable = doSomething(); 

function doeSomething(){ 
    //code 
} 
+0

ありがとう、悲しいことに、私は$ variable =/ –

0

新しい変数にASSINGがなければ、あなたはこれを行うことができます。$variableを返す別の関数(内部機能)に保存されている

call_user_func($variable());

3

あなたの無名関数(外機能)、。

$variable()を呼び出すと、外部関数が内部関数を返すことを意味します。 - で、ではありません。しかし、外部関数の結果を変数に代入しないので、内部関数はどこにも格納されません。

ので、解決策は次のとおりです。

$variable()(); 
+0

のコードを編集できません。 ^^ –