我在我的PHP代码库中安装了PostHog,并尝试按照此链接(https://posthog.com/docs/integrate/server/php
)中的教程使用它。
我尝试调用PostHog::init函数,如下所示:
PostHog::init($apikey,
array('host' => $baseUrl,
"debug" => true)
);
但我在此行PostHog::init中遇到错误,错误内容为
"Attempted to load class PostHog" from the global namespace. Did you forget a "use" statement?"
实际上,我已经在使用下面的“use”了“use PostHog\PostHog;“,但我仍然得到这个错误。我可以确认postog库是intall,因为我可以从我的代码库中读取postog库中的classess。
这是有关我的应用程序的详细信息:
- 我使用Symfony framework 5,应用程序部署在docker中。我使用PHP 7.4和posthog/posthog-php”:“2.1.1”。
- 我检查了供应商文件夹,PostHog在那里(见随附照片)x1c 0d1x
- 我在使用PostHog函数(如init、capture等)的地方实现了服务调用PosthogHandler。我从控制器调用函数的服务。但问题是在PostHog初始化阶段,错误出现在PostHog::init行的PosthogHandler构造函数中。这是我的PosthogHandler服务类:
<?php
declare(strict_types=1);
namespace App\Posthogs;
use PostHog\PostHog;
use App\User\User;
class PosthogHandler
{
public function __construct($env, string $key, string $baseUrl)
{
PostHog::init($key,
array('host' => $baseUrl,
"debug" => true)
);
}
public function addEvent(string $eventName, User $user){
PostHog::capture(array(
'distinctId' => $user->getId()->id(),
'event' => $eventName
));
}
}
任何帮助,为什么我得到以上的错误?
2条答案
按热度按时间uurity8g1#
该错误表明无法正确自动加载类文件。您可能需要首先通过创建测试文件来检查
vendor/autoload.php
中是否存在PostHog
如果没有,则应尝试以下命令
yiytaume2#
真管用!
我在(1)前端(1)控制器(3)服务中有三个供应商文件夹。
以前,我只在使用PostHog函数的服务文件夹中安装了PostHog库。尽管PostHog库出现在供应商文件夹中,但这似乎并不起作用。
当我在控制器文件夹中安装了posthog库时,它起作用了,错误消失了。我根本不使用posthog,我不知道为什么我需要在控制器文件夹中安装posthog库才能工作。但最终它起作用了!