【问题标题】:Tips for optimising this PHP code优化此 PHP 代码的提示
【发布时间】:2017-11-03 10:33:59
【问题描述】:

下面是我愿意压缩的代码:

$somefield = 0;
if ($config->get('var1.one') && is_numeric($config->get('var1.one'))) {
  $somefield = $this->entityManager->getStorage('node')->load($config->get('var1.one'));
}
$different_field = 0;
if ($config->get('var2.two') && is_numeric($config->get('var2.two'))) {
  $different_field = $this->entityManager->getStorage('node')->load($config->get('var2.two'));
}

【问题讨论】:

  • “压缩”是什么意思?代码很短,而且很中肯。我能看到的唯一快速优化是创建一个值为“$this->entityManager->getStorage('node')”的 $node var,然后用它来缩短这两行。
  • 谢谢@delCano,但是你可以看到逻辑是重复的,有没有办法我也可以优化它?
  • 哦,我明白了。是的,除了字符串“varX.NUMBER”之外,一切都是一样的。因此,您可以将其全部提取到一个方法中。让我用代码给你写一个答案。
  • 这种问题不属于Code Review而不属于SO吗?

标签: php drupal-8


【解决方案1】:

在您发表评论后,我认为您想要的是:

$somefield = checkVar("var1.one");
$different_field = checkVar("var2.two");

function checkVar($name) {
  if ($config->get($name) && is_numeric($config->get($name))) {
    return $this->entityManager->getStorage('node')->load($config->get($name));
  } else {
    return 0;
  }
}

我想这就是你想要的。我使用的名称不一定是最好的,您应该使用一些更适合实际使用功能的名称。

【讨论】:

    【解决方案2】:

    另一种方法。

            $field = [];
            $array= ['var1.one', 'var2.two'];
    
            for ($i = 0; $i < count($array); $i++) {
                if ( $config->get($array[i] ) && is_numeric($config->get($array[$i])) )
                {
                    array_push($field,  $this->entityManager->getStorage('node')->load($config->get($array[$i])));
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      • 2011-04-09
      • 1970-01-01
      相关资源
      最近更新 更多