首页 > 解决方案 > 非静态方法 Spatie\Analytics\Analytics::fetchMostVisitedPages() 不应在 laravel 8 中静态调用

问题描述

我正在使用 laravel 8,我正在尝试使用spatie\laravel-analytics,但我收到了这个错误

不应静态调用非静态方法 Spatie\Analytics\Analytics::fetchMostVisitedPages()

我已经尝试过人们的建议,但我不知道我是否遗漏了什么。所以我希望有人可以检查一下并告诉我。

这是我的代码

    <?php

    namespace App\Http\Controllers;

    use Illuminate\Support\Facades\Http;
    use Spatie\Analytics\Analytics as Analytics;
    use Spatie\Analytics\Period;

    class GoogleReportController extends Controller
    {
        public function index()
        {
            $test = Analytics::fetchMostVisitedpages(Period::days(7));
            dd($test);
        }
    }

标签: laravellaravel-8

解决方案


正如您在源代码中看到的那样,类方法Analytics不是静态的,因此您不能静态调用它们。它旨在用作单例(这是有充分理由的)。Laravel 提供Facades作为单例类的“包装器”,以允许类似静态的访问,在这个库的情况下,您可以按如下方式使用:

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Http;
use Spatie\Analytics\AnalyticsFacade as Analytics; //Change here
use Spatie\Analytics\Period;

class GoogleReportController extends Controller
{
    public function index()
    {
        $test = Analytics::fetchMostVisitedpages(Period::days(7));
        dd($test);
    }
}

推荐阅读