将应用程序初始化代码放在laravel中的位置

时间:2014-04-30 15:01:15

标签: php laravel laravel-4

我正在创建一个使用facebook php sdk的应用程序,它需要一些配置:

require_once("facebook.php");

  $config = array(
      'appId' => 'YOUR_APP_ID',
      'secret' => 'YOUR_APP_SECRET',
      'fileUpload' => false, // optional
      'allowSignedRequest' => false, // optional, but should be set to false for non-canvas apps
  );

  $facebook = new Facebook($config);

我在哪里放置这个以便在模型和控制器中使用$facebook

2 个答案:

答案 0 :(得分:4)

在这种情况下,您最好使用Laravel IoC容器。

创建服务提供商

<?php

require_once("facebook.php");

use Illuminate\Support\ServiceProvider;

class FacebookServiceProvider extends ServiceProvider {

    public function register()
    {
        $app = $this->app;

        $app->bind('facebook', function() 
        {
            $config = array(
              'appId' => 'YOUR_APP_ID',
              'secret' => 'YOUR_APP_SECRET',
              'fileUpload' => false, // optional
              'allowSignedRequest' => false, // optional, but should be set to false for non-canvas apps
            );

            return new Facebook($config);
        });
    }

}

将其添加到您的app / config / app.php

'FacebookServiceProvider',

现在,在您的应用程序的任何位置,您都可以通过以下方式访问它:

App::make('facebook')->whateverMethod();

如果只需要实例化一次,可以使用单例:

$app->singleton('facebook', function() 
{
     ....
}

答案 1 :(得分:0)

您可以将它放在app / controllers / BaseController.php中 但是我不建议在你的模型中使用它,它们应该严格地仅以编程方式表示数据。