我正在尝试使用动态对象属性的现有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,因为它期望将字符串作为第二个参数。双引号使事情变得有点棘手。
答案 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
来自哪里,我无法说,在您的用例中可能没问题。我只是想提醒你。