Laravel5を入門時に、ServiceProvider、ServiceContainer、Facadeなどの言葉が避けて通れないほどの聞かれます。最初、Laravelの説明ページから一通りに関連説明を読みましたが、分かったような感じでしたが、実際に使ってみようとの時に、まだまだ分からないと感じました。一つ一つで理解するより、これらの関連性及び使い方までを勉強した方が理解しやすいと思って、理解したことを纏めました。
compose require strebl/l5-ldap-auth
// AuthController.php
// にあるauthenticationメッソドの処理
protected function authentication(AuthenticateRequest $request)
{
// ログインリクエストからログイン名とパスワードを取得
$login_name = $request->input('login_name') ;
$password = $request->input('password') ;
// LDAP接続変数を設定ファイルから取得
$ad_option = Config::get('ldap.ad_options');
try {
// 「use adLDAP\adLDAP」でadLDAPを初期化する
$adldap = new adLDAP( $ad_option );
}
catch (adLDAPException $e) {
echo $e;
exit();
}
// adLDAPでユーザーを認証する
$result = $adldap->authenticate($login_name, $password );
return dump($result);
}
// artisanコマンドでServiceProviderのクラスのひな形追加
php artisan make:provider LDAPServiceProvider;
// app/providersフォルダの下にLDAPServiiceProvider.phpができた
// registerメッソドでLDAPサービスをServiceContainerに注入する
public function register()
{
// ServiceContainerに登録
$this->app->bind('ldap', function(){
// LDAPの接続変数の取得
$ad_option = Config::get('ldap.ad_options');
try {
// adLDAPを初期化し、インスタンスを返す
return new adLDAP( $ad_option );
}catch (adLDAPException $e) {
echo $e;
exit();
}
});
}
// このLDAPServiiceProviderをconfig/app.phpに登録する
'providers'=>[
...
App\Providers\LDAPServiceProvider::class,
...
]
// Laravel5がFacadaの初期ディレクトがない、app/facadesディレクトリを作成する
// Facadeクラス: LDAP.phpを作成する(artisanの生成コマンドがないらしい)
// getFacadeAccessorメッソドで、LDAPサービスを返す
protected static function getFacadeAccessor()
{
return 'ldap';
}
// このFacadeをエイリアス名(簡単に使えるため)をconfig/app.phpに登録する
'aliases'=>[
...
'LDAP' => App\Facades\LDAP::class,
...
]
// コントローラーでLDAPサービスを呼出して、ユーザー認証
protected function authentication(AuthenticateRequest $request)
{
// ログインリクエストからログイン名とパスワードを取得
$login_name = $request->input('login_name') ;
$password = $request->input('password') ;
// ログインユーザーの認証
$result = \LDAP::authenticate($login_name, $password );
return dump($result);
}