在飞行功能

时间:2013-07-23 09:55:07

标签: php function variables

为什么我不能这样做?或者我只是弄错了语法?

$status = function() {
    switch($job['status'])
    {   case "CREATED": return "Created by <b>$creator</b> on " . date("jS \o\\f M Y",$job['ts']); break;
        case "APPROVAL": return "Pending Approval."; break;
        case "DEFERRED": return "Marked as <b>Deferred</b> by <b>$creator</b>."; break;
        case "COMPLETE": return "Marked as <b>Complete</b>."; break;
    }
}

echo $status;

3 个答案:

答案 0 :(得分:3)

Anonymous functions需要PHP&gt; = 5.3.0

$status = function($job, $creator) {
    switch($job['status'])
    {   case "CREATED": return "Created by <b>$creator</b> on " . date("jS \o\\f M Y",$job['ts']); break;
        case "APPROVAL": return "Pending Approval."; break;
        case "DEFERRED": return "Marked as <b>Deferred</b> by <b>$creator</b>."; break;
        case "COMPLETE": return "Marked as <b>Complete</b>."; break;
    }
};

echo $status($job, $creator);

答案 1 :(得分:1)

你要做的是一个闭包(匿名函数)。但这仅适用于PHP&gt; = 5.3。

正确的语法是:

$status = function($job) {
    // your switch
};

echo $status($job);

// or import $job to scope

$job = array('status' => 'CREATED');
$status = function() use($job) {
    // your switch
};

echo $status();

为什么不只是做一个正常的功能?

function getStatus($job) {
    // your switch
}

echo getStatus($job);

答案 2 :(得分:0)

嗨Maybe或许您应该查看php man - variable functionanonymous functionsclosure