我正在为Drupal开发一个补丁,提交给Registration Code module。简而言之,有没有更有效的方法来编写下面的代码?
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更改。
发布于 2011-02-18 11:17:53
代码看起来不错,你想要多高的效率?较小的变化可能是:
if (module_exists('regcode_voucher')) {
$cnfg = variable_get('regcode_voucher_display', null);
if ($cnfg) {
// do your actions
}
}我不推荐合并if...,代码应该清晰易懂。如果你为了优化而合并这些代码,你会为真实的处理器赢得“微小的”毫秒,但却失去了干净的代码。
发布于 2011-02-18 21:38:02
如果找不到变量,为什么还要从variable_get返回数组呢?variable_get将始终返回一个字符串或序列化数组(需要取消序列化)。如果我遗漏了什么,你可以使用array_key_exists('regcode',variable_get(...))检查数组密钥。
这应该行得通。注意,如果找不到变量,则从variable_get返回"false“作为默认值,这将导致if条件不匹配。我个人认为这比嵌套的if语句更具可读性(不过,对于3+条件,我会嵌套)。
if( module_exists('regcode_voucher') && variable_get('regcode_voucher_display', false) ) {
// stuff
}https://stackoverflow.com/questions/5037232
复制相似问题