PHP Carbon在双引号字符串中添加动态对象属性

时间:2018-03-24 02:36:15

标签: php laravel date php-carbon

我正在尝试使用动态对象属性的现有Laravel日期构建Carbon日期:

private static function createEvent($booking, $service) {
    dd(Carbon::createFromFormat('Y-m-d H:i:s', "$booking->service_{$service}_date_end $booking->service_1_time_end"));
}

这一直在回归:

  

发现意外数据。发现意外数据。发现意外数据。   数据缺失

知道如何才能让它发挥作用吗?我似乎无法将变量直接传递给Carbon,因为它期望将字符串作为第二个参数。双引号使事情变得有点棘手。

1 个答案:

答案 0 :(得分:0)

让我们稍微分解你有2个属性,一个是动态的。

因此,要访问动态属性,您可以执行此操作

 $prop = "service_{$service}_date_end";

 $booking->{$prop}

然后我们只有一个标准属性和一个空格,然后把它放到那个

     dd(Carbon::createFromFormat('Y-m-d H:i:s', $booking->{$prop}.' '.$booking->service_1_time_end"));

现在你可以把它们放在一行上,但你基本上是双插值变量。因此,如果你照顾那个,然后做另一个,它会更容易阅读和做。

对我来说,可读性就是一切,保持简单,它会起作用。

那就是说我认为这种方法存在根本缺陷,因为你没有真正的方法知道该财产是否真的存在。因此,您会对未定义的对象属性等错误持开放态度。

您可以使用简单的switch语句更强大地执行此操作。

但是,如果不知道您使用它的全部范围或$service来自哪里,我无法说,在您的用例中可能没问题。我只是想提醒你。