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

use*_*755 2 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));
}
Run Code Online (Sandbox Code Playgroud)

这是文档的链接

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

类文档说它返回一个bool.

有什么意义呢

? 'task_new' 
: 'task_sucess'; 
Run Code Online (Sandbox Code Playgroud)

m59*_*m59 5

这被称为"三元",它很棒:

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

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

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

if ($form->get('saveAndAdd')->isClicked()) {
  $nextAction = 'task_new';
}
else {
  $nextAction = 'task_success';
}
Run Code Online (Sandbox Code Playgroud)

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

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

$foo = (false) ? 'True value!' : 'False value!';
echo $foo; //'False value!' of course!
Run Code Online (Sandbox Code Playgroud)