首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更有效地编写此Drupal代码段?

如何更有效地编写此Drupal代码段?
EN

Stack Overflow用户
提问于 2011-02-18 11:02:45
回答 2查看 161关注 0票数 0

我正在为Drupal开发一个补丁,提交给Registration Code module。简而言之,有没有更有效的方法来编写下面的代码?

代码语言:javascript
复制
if (module_exists('regcode_voucher')) {
  $cnfg = variable_get('regcode_voucher_display', array('regform' => 'regform'));
  if (empty($cnfg['regform'])) {
    return;
  }
}

似乎我应该能够使用&&组合两个条件来将其简化为一条if语句,但我还没有找到允许我这样做的语法或必要的php数组函数。

如果某些上下文有帮助,regcode_voucher子模块允许用户在用户编辑页面上输入他们的注册码。在我们的网站上,经过"beta“阶段后,我们希望通过删除注册码字段来简化注册表;但我们希望用户仍然能够在他们的帐户编辑页面上输入注册码。上面的代码是一个补丁的一部分,它允许绕过正则代码的hook_user更改。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-18 11:17:53

代码看起来不错,你想要多高的效率?较小的变化可能是:

代码语言:javascript
复制
if (module_exists('regcode_voucher')) {
  $cnfg = variable_get('regcode_voucher_display', null);
  if ($cnfg) {
    // do your actions
  }
}

我不推荐合并if...,代码应该清晰易懂。如果你为了优化而合并这些代码,你会为真实的处理器赢得“微小的”毫秒,但却失去了干净的代码。

票数 2
EN

Stack Overflow用户

发布于 2011-02-18 21:38:02

如果找不到变量,为什么还要从variable_get返回数组呢?variable_get将始终返回一个字符串或序列化数组(需要取消序列化)。如果我遗漏了什么,你可以使用array_key_exists('regcode',variable_get(...))检查数组密钥。

这应该行得通。注意,如果找不到变量,则从variable_get返回"false“作为默认值,这将导致if条件不匹配。我个人认为这比嵌套的if语句更具可读性(不过,对于3+条件,我会嵌套)。

代码语言:javascript
复制
if( module_exists('regcode_voucher') && variable_get('regcode_voucher_display', false) ) {
  // stuff
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5037232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档