Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉维碳可选参数_Php_Laravel_Api_Php Carbon - Fatal编程技术网

Php 拉维碳可选参数

Php 拉维碳可选参数,php,laravel,api,php-carbon,Php,Laravel,Api,Php Carbon,我有一个与外部API通信的函数,希望它以Carbon实例的形式传入可选参数,但是API需要Y-m-d格式,所以我这样做了: protected function boostsAPIRequest($token, Carbon $dateFrom = null, Carbon $dateTo = null) { try { $boosts = $this->httpGetRequest($token, $this->apiURL . 's

我有一个与外部API通信的函数,希望它以
Carbon
实例的形式传入可选参数,但是API需要
Y-m-d
格式,所以我这样做了:

protected function boostsAPIRequest($token, Carbon $dateFrom = null, Carbon $dateTo = null)
{
    try {
        $boosts = $this->httpGetRequest($token,
            $this->apiURL . 'stats/api/v1.0/boosts' . '/?date_from=' . $dateFrom->format('Y-m-d') . '&date_to=' . $dateTo->format('Y-m-d'));
        //session()->put('boosts', $boosts);
    } catch (ClientException $e) {
        $this->errorHandling($e);
    }
    return $boosts ?? null;
}
这给了我一个错误的说法

Call to a member function format() on null
如果没有传入任何参数,是否有办法将其保留为空?

而不是:

$dateFrom->format('Y-m-d') . '&date_to=' . $dateTo->format('Y-m-d')
使用应使用:

($dateFrom ? $dateFrom->format('Y-m-d') : '') . '&date_to=' . ($dateTo ? $dateTo->format('Y-m-d') : '')
这是因为您不能在非对象上运行
format
方法(本例中为null)

而不是:

$dateFrom->format('Y-m-d') . '&date_to=' . $dateTo->format('Y-m-d')
使用应使用:

($dateFrom ? $dateFrom->format('Y-m-d') : '') . '&date_to=' . ($dateTo ? $dateTo->format('Y-m-d') : '')

这是因为您不能在非对象上运行
format
方法(在本例中为null)

您可以简单地允许字符串值传递到函数中,使用Carbon的
parse()
方法如下:

protected function boostsAPIRequest($token, $dateFrom = null, $dateTo = null) {
    $dateFrom = Carbon::parse($dateFrom);
   //the same with $dateTo
}

当心Carbon知道如何将null值解析为
现在
日期时间,以防收到null,因为null甚至是大多数函数的默认值,它创建了Carbon实例。

您可以简单地允许字符串值传递到函数中,使用
parse()
类碳so法:

protected function boostsAPIRequest($token, $dateFrom = null, $dateTo = null) {
    $dateFrom = Carbon::parse($dateFrom);
   //the same with $dateTo
}
当心Carbon知道如何将null值解析为
now
日期时间,以防收到null,因为null甚至是创建Carbon实例的大多数函数的默认值