Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。3UnitTestについてまとめ参考資料ログインサービスそれでは、実際にS2Containerを使いながら説明していきます。ここでは、サンプルとしてコマンドラインから使用するログインサービスを作成します。ユーザーはコマンドラインからユーザー名とパスワードを入力します。ログインサービスは入力された情報でユーザー認証を行いその結果を表示します。セットアップS2Containerをセットアップページに従ってインストールします。ダウンロードパッケージとして、PEARパッケージとフルパッケージの2種類が用意されています。install」コマンドでインストールする方法が簡単です。インストール後、S2Containerを使用するためには__autoload関数の設定が必要になります。こちらもセットアップページに__autoload関数のサンプルが掲載されているので参照ください。インターフェイスを定義する今回は、ログインサービスと認証ロジックに分けて問題を考えます。ログインサービスログインサービスのインターフェイス名はLoginServiceとします。ログインサービスは、ログインに必要な情報を取得し、認証ロジックに認証を委譲します。最後に取得した情報および認証結果をまとめた情報を返します。認証ロジック認証ロジックのインターフェイス名はAuthLogicとします。認証ロジックは、渡された情報を元にユーザー認証を行います。ユーザー認証の方法はいろいろ考えられます。ここでは、最初にシンプルなテキストマッチを行う認証ロジックを作成し、後ほど、INI形式のパスワードファイルを用いる認証ロジックに差し替えることにします。メインの実行ファイルです。処理の流れは次のようになります。実際のファイルは次のとおりです。}}?>LoginService.class.phpLoginServiceインターフェイスでは、ログインサービスを提供するloginメソッドを定義します。loginメソッドはログイン情報および認証結果をまとめたUserInfoクラスのインスタンスを返します。実際のファイルは次のとおりです。ログイン処理を実行します。UserInfoインスタンスに格納し返します。login();}?>ConsoleLoginService.class.phpLoginServiceインターフェイスの実装であるConsoleLoginServiceクラスを作成します。ConsoleLoginServiceクラスは、標準入力からユーザー名とパスワードを取得し、ユーザー認証を行います。入力情報と認証結果をUserInfoクラスのインスタンスに格納して返します。ユーザー認証はAuthLogicに委譲するため、AuthLogicの実装クラスのインスタンスを保持するauthLogicプロパティを用意します。Hintingします。これにより、S2Containerの自動バインディング機能を用いたセッター・インジェクションが可能となります。認証については、telnetやsshでのログインと同じように複数回トライできるようにします。トライできる回数を設定するtryCountプロパティを用意し、そのセッターメソッドを実装します。トライ回数はdiconファイルのpropertyタグで設定し、コンテナにインジェクションしてもらいます。実際のファイルは次のとおりです。標準入力からログイン名とパスワードを取得し、ログイン処理を行います。authLogicプロパティのセッターメソッドです。tryCountプロパティのセッターメソッドです。}}?>AuthLogic.class.phpAuthLogicインターフェイスでは、ユーザー認証を行うauthメソッドを定義します。authメソッドはユーザー名とパスワードを引数にとります。実際のファイルは次のとおりです。認証処理を実行します。