$password);}?>SimplePasswdAuthLogic.class.phpAuthLogicインターフェイスの実装であるSimplePasswdAuthLogicクラスを作成します。SimplePasswdAuthLogicクラスはauthメソッドを実装し、その引数であるユーザー名とパスワードでユーザー認証を行います。認証結果はbooleanを返します。ユーザー名が「foo」、パスワードが「bar2006」の場合にのみtrueを返します。実際のファイルは次のとおりです。固定のユーザー名とパスワードでユーザー認証を行います。}}?>UserInfo.class.phpUserInfoクラスはログイン情報と認証結果を管理します。ログイン情報は、ユーザー名とログインした時の時間(time関数の戻り値)とします。認証結果はbooleanです。実際のファイルは次のとおりです。ログイン情報とユーザー認証結果を管理します。authプロパティのセッターメソッドです。ユーザー認証結果を返します。usernameプロパティのセッターメソッドです。usernameプロパティのゲッターメソッドです。loginTimeプロパティのセッターメソッドです。loginTimeプロパティのゲッターメソッドです。loginTimeプロパティ値より、日付と時間を返します。}}?>login.diconloginダイコンファイルには、2つのコンポーネントを定義します。loginServiceコンポーネントloginServiceコンポーネントは、ログインサービスのコンポーネントで、class属性にConsoleLoginServiceクラスを指定します。ログインのトライ回数をpropertyタグで設定します。propertyタグのname属性にプロパティ名tryCountを設定し、propertyタグのボディに回数を指定します。ここではトライ回数は3回までとしました。authLogicコンポーネントauthLogicコンポーネントは、認証ロジックのコンポーネントで、class属性にSimplePasswdAuthLogicを指定します。実際のファイルは次のとおりです。class="SimplePasswdAuthLogic"/></components>実行login.phpをコマンドラインから実行すると、ユーザー名とパスワードの入力が求められます。ユーザー名に「foo」、パスワードに「bar2006」と入力するとログインが成功した旨のメッセージが表示されます。ユーザー名またはパスワードが違う場合は、認証に失敗したメッセージが表示され、再度ユーザー名とパスワードの入力が促されます。ここでは3回認証に失敗するとログインが失敗になります。次にユーザー固定のSimplePasswdAuthLogicの実装変更として、ユーザー名とパスワードをINIファイルから読み込むことができるIniPasswdAuthLogicを実装します。IniPasswdAuthLogic.class.phpIniPasswdAuthLogicは、セクション無しのINIファイルに記述されている複数のユーザー名とパスワードで認証を行います。サンプルのINIファイルは次のとおりです。"bar2006"パスワードファイルはdiconファイルで指定できるようにします。IniPasswdAuthLogicにpasswdFileプロパティを用意し、そのセッターメソッドを実装します。実際のファイルは次のとおりです。ユーザー認証を行います。passwdFileプロパティのセッターメソッドです。パスワードを読み込みます。}}?>login.diconauthLogicコンポーネントのclass属性値を、新しく作成したIniPasswdAuthLogicに変更します。authLogicコンポーネントにpropertyタグを追加し、name属性にpasswdFile、そのボディにパスワードファイル(passwd.ini)を設定します。これによりパスワードファイルはセッター・インジェクションされます。実際のファイルは次のとおりです。「login.php」をコマンドラインから実行すると、ユーザー名とパスワードの入力が求められます。ここで、「passwd.ini」に設定済みのユーザー名とパスワードを入力し、ログインできることを確認します。認証ロジックをIniPasswdAuthLogicに変更しましたが、ログインサービスについては変更はありませんので、ログインサービスの動作は前回と変わりません。認証に3回失敗するとログイン失敗となります。)C:\CodeZine>認証ロジックをSimplePasswdAuthLogicからIniPasswdAuthLogicに変更したように、あるコンポーネントがもつ機能の実装に変更が生じた場合(インターフェイスには変更がない場合)には、diconファイルのコンポーネント定義を再設定することで対応できます。今回の例では、login.phpやConsoleLoginServiceクラスへの変更は特にありませんでした。パスワードを暗号化するShadowPasswdAuthLogicなどを実装してみて、diconファイルでauthLogicコンポーネントを差し替えることを試していただければと思います。Seasar.PHPプロジェクトにて、コミッタ活動しています。NEW1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。12:00法務担当者、6割超が今後業務で「生成AIを使用したい」と回答。NEW新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。