什么':'和'?' isClicked()symfony中的含义

时间:2014-01-29 15:15:45

标签: php symfony

if ($form->isValid()) {
// ... perform some action, such as saving the task to the database

$nextAction = $form->get('saveAndAdd')->isClicked()
    ? 'task_new'
    : 'task_success';

return $this->redirect($this->generateUrl($nextAction));
}

以下是文档的链接

http://symfony.com/doc/current/book/forms.html

类文档说它返回一个bool。

有什么意义
? 'task_new' 
: 'task_sucess'; 

6 个答案:

答案 0 :(得分:6)

这被称为“三元”,它很棒:

这是根据条件分配值$nextAction。第一部分(在=之后)是条件,如if语句,第二部分(在?之后)是条件为真时分配的值,最后一部分part(在:之后)是条件为false时分配的值。

               //the condition
$nextAction = $form->get('saveAndAdd')->isClicked()
    ? 'task_new' //true value
    : 'task_success'; //false value

这是一种较短的写作方式:

if ($form->get('saveAndAdd')->isClicked()) {
  $nextAction = 'task_new';
}
else {
  $nextAction = 'task_success';
}

所以,这里有一些简单的例子:

$foo = (true) ? 'True value!' : 'False value!';
echo $foo; //'True value!' of course!

$foo = (false) ? 'True value!' : 'False value!';
echo $foo; //'False value!' of course!

答案 1 :(得分:3)

这是三元运营商。语法如下:

value = (condition) ? run if true : run if false;

在这种情况下,如果$form->get('saveAndAdd')->isClicked()为真,那么task_new。其他task_success

如果可以像这样重写:

if($form->get('saveAndAdd')->isClicked()) {
    $value = "task_new";
} else {
    $value = "task_success";
}

答案 2 :(得分:1)

三元运算符是if语句的缩写形式。 :是“其他”部分。 Java中的示例:

boolean bool;
true ? bool = true : bool = false;

这是一个毫无意义的例子,但很好地展示了三元运算符。 如果条件,这里true为“true”,则填入变量bool true,否则为false。

用Java替代if语句到上面的代码示例:

boolean bool;

    if(true)
        bool = true;
    else
        bool = false;

答案 3 :(得分:0)

这是一个Ternary Operator,是一个简短的if else语句。这相当于

if($form->get('saveAndAdd')->isClicked()){
    $nextAction = 'task_new'
else{
    $nextAction = 'tassk_success'
}

答案 4 :(得分:0)

这是三元运算符,一个与if

相同的简写表达式
$value = someFunc() ? "whatever" : "the other"

相当于

if (someFunc()) {
  $value = "whatever";
} else {
  $value = "the other";
}

答案 5 :(得分:0)

这相当于“if”和“else”语句。

此代码:

$nextAction = $form->get('saveAndAdd')->isClicked()
    ? 'task_new'
    : 'task_success';

等同于此代码:

if ( $form->get('saveAndAdd')->isClicked() )
{
    $nextAction = 'task_new';
}
else
{
    $nextAction = 'task_success';
}