Symfony cookbook中的语法理解

时间:2015-04-24 10:08:57

标签: php symfony

有人可以解释一下Symfony Cookbook中的以下一行(主题是主题是提交表格的动态生成)

我不会忽略以下内容: array():

$sport = $event->getData()->getSport(); // getdata submited by the user in the Sport input
$positions = null === $sport ? array() : $sport->getAvailablePositions();

// is it similaire to that line? what the difference?
$positions = $event->getData()->getSport()->getAvailablePositions();

4 个答案:

答案 0 :(得分:1)

?是三元如果;这是单行上的if语句 它可以改写为

if (null === $sport) {
    $positions = array(); // an empty array
} else {
    $positions = $sport->getAvailablePositions();
}

答案 1 :(得分:0)

该行说明,如果$sport为空(===表示同时检查类型/值),$sport将为空array(),如果不是,$sport将是$sport->getAvailablePositions();

$positions只是得到它的结果!

答案 2 :(得分:0)

它是一个三元条件运算符。它是if if后跟一个做作的因式分解。Documentation

答案 3 :(得分:0)

这被称为" Ternary Logic"。你可以在这里查看一篇好文章:http://davidwalsh.name/php-shorthand-if-else-ternary-operators

逻辑是:

  1. $ sport null?
  2. 如果是,请返回一个数组
  3. 否则,请获取availablePosition集合
  4. 目标是在最后和所有情况下都有可迭代的东西,比如数组,集合等。

    它与$positions = $event->getData()->getSport()->getAvailablePositions();不相似,因为如果getSport()返回null,则会抛出错误,因此在空值上调用getAvailablePosition()