laravel - 在 Laravel 中安装 composer 包后如何在 app.php 提供程序和别名中获取路径
问题描述
在 laravel 中,我愿意
composer require facebook/graph-sdk
已经完成了,但是之后如何在 laravel 项目中注册这个包呢?
我知道我必须去 app.php 并更改
'providers' => [...
和
'aliases' => [....
但我怎么知道要追加什么?安装其他软件包时如何获取它?
我希望我能做到
use Facebook;
在控制器中,但我不知道如何。
解决方案
Facebook Graph SDK 只是一个通用的 PHP SDK。您需要在 Laravel 应用程序中创建一个绑定其配置值的服务提供者。
FACEBOOK_CLIENT_ID
首先,创建名为and的环境变量FACEBOOK_CLIENT_SECRET
。
接下来,将这些环境变量绑定到配置值。打开config/services.php文件并添加以下内容:
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
],
现在,使用 Artisan 创建一个服务提供者 ( php artisan make:provider FacebookServiceProvider
) 并将其添加到config/app.phpproviders
的数组中。
服务提供者应如下所示:
use Facebook\Facebook;
class FacebookServiceProvider extends ServiceProvider
{
protected $defer = true;
public function register()
{
$this->app->singleton(Facebook::class, function ($app) {
return new Facebook([
'app_id' => $app['config']['services.facebook.client_id'],
'app_secret' => $app['config']['services.facebook.client_secret'],
'default_graph_version' => 'v2.10',
]);
});
}
public function provides()
{
return [
Facebook::class,
];
}
}
这会将 Facebook Graph SDK 的配置实例添加到应用程序的容器中,这意味着您可以在类的构造函数中对其进行类型提示并使用它:
class SomeController extends Controller
{
private $facebook;
public function __construct(Facebook $facebook)
{
$this->facebook = $facebook;
}
public function someMethod()
{
// Can use $this->facebook and it’ll already be
// configured with app ID and secret.
}
}
服务提供者也被延迟,这意味着 SDK 仅在您请求时加载。
推荐阅读
- assembly - 来宾虚拟机 - 退出
- python - 使用 sqlalchemy 修改现有的文本 SQL 语句
- tensorflow - 在 sagemaker 示例笔记本之后训练了 maskrcnn,收到警告:您的模型将无法使用 SageMaker TensorFlow Serving 容器提供服务
- node.js - Winstonjs - 不同级别的不同格式?
- android - 无法在 android studio 中更改主题
- matlab - Simulink 拾取和放置
- react-native - 反应本机文本可选道具不起作用
- c++ - C++ if else if else 输出语句
- php - Symfony 5.* + Guzzle:cookie 持久性
- r - 如何在弹出窗口中添加下载按钮?