【问题标题】:Receive parameters via POST and use them to create an object in PHP, then JSON serialize the object通过 POST 接收参数并使用它们在 PHP 中创建一个对象,然后 JSON 序列化该对象
【发布时间】:2018-11-08 17:31:36
【问题描述】:

背景:

我正在通过 POST 接收支付服务的交易初始化参数。然后我需要使用这些参数在 PHP 中创建一个 'Deposit' 对象,然后 JSON 序列化存放的对象并将 JSON 存储到一个变量中。

我正在尝试使用以下代码来实现:

代码:

//get parameters by POST and add to Deposit class
$user_id = echo $_POST["user"];
$tradingaccount_id = echo $_POST["trading_account"];
$fundprocessor_id = echo $_POST["func_processor"];
$paymentgateway_type = echo $_POST["payment_gateway_type"];
$paymentgateway_id = echo $_POST["payment_gateway_id"];
$amount = echo $_POST["deposit_amount"];
$client_ip = echo $_POST["user_ip"];

//Deposit class
var deposit = new Deposit 
{ 
UserId = echo $user_id, 
TradingAccountId = new Guid(echo $tradingaccount_id), 
FundProcessorId = int (echo $fundprocessor_id), 
PaymentGatewayId = echo $paymentgateway_id, 
Amount = echo $amount, 
ClientIp = echo $client_ip 

//serialize data to JSON
function getJsonData(){
    $var = get_object_vars($this);
    foreach ($var as &$value) {
        if (is_object($value) && method_exists($value,'getJsonData')) {
            $value = $value->getJsonData();
        }
    }
    return $var;
}

};

问题:

以上是正确的方法吗? $var 变量会包含 JSON 序列化的对象吗?

【问题讨论】:

  • 请阅读docs 了解如何声明变量。
  • @hungrykoala ,你的意思是我应该改变变量在“存款”类中的声明方式?谢谢
  • 在分配变量时不需要回显它们。 $user_id = $_POST["user"];
  • 我明白了,所以我也不应该在课堂上使用 echo,对吧?

标签: php json class post parameters


【解决方案1】:

如果您的 Deposit 类不会实现任何额外的逻辑,您可以采用更简单的方法:

  $deposit = [];

  $deposit['UserId'] = $_POST["user"];
  $deposit['TradingAccountId'] = new Guid($_POST["trading_account"]);
  $deposit['FundProcessorId'] = intval($_POST["func_processor"]);
  $deposit['PaymentGatewayId'] = $_POST["payment_gateway_id"];
  $deposit['Amount'] = $_POST["deposit_amount"];
  $deposit['ClientIp'] = $_POST["user_ip"];

  $json = json_encode($deposit);

否则你应该在你的类中实现JsonSerializable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多