laravel - 非静态方法 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);
}
}
解决方案
正如您在源代码中看到的那样,类方法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);
}
}
推荐阅读
- mysql - 在主实例上创建触发器时出现 Aurora MySQL 复制错误
- visual-studio-code - 如果__name_ ...片段如何让vs代码自动插入?
- laravel - 动态集合映射:在集合中添加缺失的记录
- python - 在 python 中实现基本元胞自动机时如何利用并行性?
- css - Mozilla 显示的 CSS 与 chrome 不同?
- variables - 在模板 bat 文件后命名文件 - 使用 CMD 代码
- javascript - GSAP 和 querySelectorAll 未在动态添加的字段上触发
- javascript - Leaflet WMS - 如何从错误中获取 HTTP 状态代码?
- python - 在 Python C API 中运行 PyRun_String() 时如何用代码注释行?
- php - 无法重现“iconv():在输入字符串中检测到非法字符”,但我一直在服务器上