在Laravel中安装composer程序包后,如何在app.php提供程序和别名中获取路径

时间:2018-07-09 11:20:38

标签: laravel composer-php

在laravel中,我

composer require facebook/graph-sdk

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

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

'providers' => [...

'aliases' => [....

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

我希望我能做

use Facebook;

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

1 个答案:

答案 0 :(得分:3)

Facebook Graph SDK只是一个通用的PHP SDK。您需要在Laravel应用程序中创建一个绑定其配置值的服务提供商。

首先,创建名为FACEBOOK_CLIENT_IDFACEBOOK_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.php 中的providers数组中。

服务提供商应如下所示:

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。