前回は、CRUDアプリをファンクショナルテストでガードしました。今回は、index.phpに集中しているロジックをMVCの形に分離するリファクタリングを行います。目次composer.jsonの編集index.phpのコードをコントローラに移すDB更新ロジックをモデルに移す動作確認ディレクトリ構成composer.jsonの編集composer.jsonにautoloadの情報を追加します。}}下記コマンドを実行します。名前空間とディレクトリをマッピングするための情報が書き込まれます。..);index.phpのコードをコントローラに移すMemberControllerProvider.phpvendorと同じ階層にsrcディレクトリを作成し、その中にコントローラを記述します。index.phpから、書式をあわせつつ移動します。}}index.phpindex.phpの情報は、コントローラに移動します。代わりに、Applicationクラスのmountメソッドでコントローラを読み込んでいます。SilexTutorial\Provider\MemberControllerProvider());$app->run();このあたりでテストを実行して、アプリケーションが壊れていないことを確認します。DB更新ロジックをモデルに移すコントローラができましたが、DBの更新ロジックがコントローラに書かれています。DB更新ロジックをモデルに移動します。サービスモデルの作成サービスモデルを作成します。}}MemberServiceProvider.php上記で作成したサービスモデルを$app経由で呼び出すためのServiceProviderを作成します。}}index.phpMemberServiceProviderを登録します。SilexTutorial\Provider\MemberControllerProvider());//...MemberControllerProvider.phpMemberサービスモデルのregisterメソッドを呼び出します。}}動作確認テストを実行して、アプリケーションの動作が変わっていないことを確認します。ディレクトリ構成ディレクトリ構成は下記になります。index.phpおわりにチュートリアルは、検索画面やセッションを利用したログイン画面と続きます。興味のある方は続きをやってみてください。DB接続への設定値が分散していたり、課題はたくさんあります。私はこのあたりまで試してみて、いったん学習をやめました。先にSymfony2を勉強して、Silexを使用したいケースがあれば戻ってこようと思っています。