WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
サービスプロバイダー

サービスプロバイダー

このエントリーをはてなブックマークに追加

サービスプロバイダーとは、サービスを提供するもののことで、インターネットサービスプロバイダー(ISP)や、アプリケーションサービスプロバイダー(ASP)などがあります。

Laravelでは、アプリケーションの基本情報を登録する場所として提供されています。「IoCコンテナ結合の登録場所」でもちょっと触れましたが、IoCコンテナ結合の最善の場所は、サービスプロバイダーです。

Laravelのサービスプロバイダーは、Illuminate\Support\ServiceProviderクラスを拡張し、registerメソッドを定義することで生成されます。

それでは、実際にサービスプロバイダーを生成してみたいと思います。Illuminateフォルダ内に新しく、Transフォルダを作成し、そこに、TransServiceProviderを作成します。

vendor/laravel/framework/src/Illuminate/Trans/TransServiceProvider.php

<?php namespace Illuminate\Trans;
use Illuminate\Support\ServiceProvider;
class TransServiceProvider extends ServiceProvider{
 public function register(){
 $this->app->bind('trans',function(){
 return new \Trans;
 });
 }
}

生成したサービスプロバイダーを設定ファイルの109行目あたりの、providers配列に追加します。

app/config/app.php

  'Illuminate\Trans\TransServiceProvider',

ルーターを再度下記のように修正します。

app/routes.php

Route::get('/',function(){
$trans=App::make('trans');
return $trans->geno('2014/5/5');
});

これでブラウザに「平成26年5月5日」と表示されたらOKです。

実行時にサービスプロバイダーを登録する

app/config/app.phpファイルに事前に登録しなくても、実行時にApp::registerメソッドによりサービスプロバイダーを登録することも出来ます。

まず、先ほどのapp/config/app.phpファイルの追加行を削除するかコメントアウトしてください。

そして、ルーターを下記のように修正します。

app/routes.php

Route::get('/',function(){
 App::register('Illuminate\Trans\TransServiceProvider');
 $trans=App::make('trans');
 return $trans->gengo('2014/5/5');
});

上記と同様に元号の日付が表示されるはずです。

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です