将 Ruby 转换为 PHP



我不是PHP的人,我需要将这段代码从Ruby转换为PHP,我将插入WordPress网站:

#controller
def action1
  @value1 =
    if @current_user
      @current_user.value1
    else
      if cookies[:value1].blank?
        value1 = SecureRandom.hex(6)
        cookies[:value1] = {
          :value => value1,
          :expires => 5.years.from_now.utc
        }
        value1
      else
        cookies[:value1]
      end
    end
end
#view
<script>
  someMethod({'key1': <%= @value1 %> })
</script>

其中@current_user模型用户的实例。这是我的尝试:

# 123.php (view)
<?php
  $user = get_current_user();
  if ($user) {
    $value1 = $user.value1();
  } else {
    if(!isset($_COOKIE["value1"])) {
      $retVal = "????"; // how to generate 12 random digitst the way SecureRandom.hex(6) does?
      setcookie("value1", $retVal, time() + (86400 * 30) * 365 * 5, "/");
      $value1 = $retVal;
    } else {
      $value1 = $_COOKIE["value1"];
    }
  }
?>
<script>
  someMethod({'key1': <?php echo $value1 ?> })
</script>

不过,我不确定get_current_user()是我正在寻找的。

其他错误?

我不是 Ruby 人,但至少以下内容应该是有效的 PHP。

<?php
  $user = get_current_user();
  if ($user) {
    $value1 = $user->value1(); ///// need to use -> not .
  } else {
    if(!isset($_COOKIE["value1"])) {
      $retVal = openssl_random_pseudo_bytes(6); ////// 
      setcookie("value1", $retVal, time() + (86400 * 30) * 365 * 5, "/");
      $value1 = $retVal;
    } else {
      $value1 = $_COOKIE["value1"];
    }
  }
?>
<script>
  someMethod({'key1': <?php echo $value1 ?> })
</script>

有关详细信息,请参阅手册。

最新更新