首页 > 解决方案 > 在 Laravel 中安装 composer 包后如何在 app.php 提供程序和别名中获取路径

问题描述

在 laravel 中,我愿意

composer require facebook/graph-sdk

已经完成了,但是之后如何在 laravel 项目中注册这个包呢?

我知道我必须去 app.php 并更改

'providers' => [...

'aliases' => [....

但我怎么知道要追加什么?安装其他软件包时如何获取它?

我希望我能做到

use Facebook;

在控制器中,但我不知道如何。

标签: laravelcomposer-php

解决方案


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 仅在您请求时加载。


推荐阅读