php - 安装 PHP 包后未定义类型
问题描述
我对 PHP 很陌生。我正在尝试安装kreait/firebase-php
库,所以我安装了作曲家,我做到了composer require kreait/firebase-php
之后,我尝试在我的一个 php 文件中导入库,如下所示
use Kreait\Firebase\Factory;
$factory = (new Factory)
->withServiceAccount('/path/to/firebase_credentials.json')
->withDatabaseUri('https://my-project-default-rtdb.firebaseio.com');
但我 在 VS Code 中不断收到Undefined type 'Kreait\Firebase\Factory'.intelephense(1009) 。
请问,接下来我该怎么办?我正在使用 php 8.0.1
解决方案
看起来您忘记了包含 Composer 的自动加载机制:
require 'path/to/vendor/autoload.php';
use Kreait\Firebase\Factory;
$factory = (new Factory)
->withServiceAccount('/path/to/firebase_credentials.json')
->withDatabaseUri('https://my-project-default-rtdb.firebaseio.com');
似乎有一个普遍的误解use
。虽然它确实将已加载的类从其原始名称导入到当前命名空间中,因此您可以通过其所谓的 unqualified 而不是通过其限定名称(在您的情况下Factory
为 vs. Kreait\Firebase\Factory
)来引用它,但它实际上并没有导入该类从它的物理位置(即它不处理文件系统) - 这就是自动加载器的用途:
- https://www.php.net/manual/en/language.namespaces.importing.php
- https://www.php.net/manual/en/language.oop5.autoload.php
- https://stackoverflow.com/a/66921037/3323348
对于您收到的错误消息,请参阅:
推荐阅读
- c++ - git_remote_connect 出现“无效命令”错误
- postgresql - 尝试在 Google Cloud 中创建 SQL 实例 - Kubernetes
- linux - ubuntu 14.06 上的 omnet++ 生成文件中的错误
- vba - DropIt Project - 根据文件夹中的文件数量移动文件夹
- mysql - 我可以为 SQL_CALC_FOUND_ROWS 使用 1 而不是星号吗?
- java - Java中保存文件的完整路径
- android - 我的错误是 JSONArray 无法转换为 JSONObject
- javascript - 如何使用节点 js 将图像上传到 mongodb 并表达
- windows - 如何在 Windows 10 中使用 rdp(远程桌面协议)启动应用程序?
- c# - OpenIdConnectEvents OnAuthorizationCodeReceived 未触发