laravel-modules で 表と裏の使い分けを

laravel-modules で 表と裏の使い分けを

どうもこんにちは塚本です。

皆さんは表の顔と裏の顔をうまく使い分けれていますか?
ぼくはlaravel-modulesをつかうことでうまく行きました。

laravel-modules

nWidart/laravel-modulesを用いると、
システムを単一のモジュール(要素)に分けて構築していくことができます。

デフォルトのLaravelでは、app/にすべてのロジックが入っていると思います。

この構造において、
Nicolas Widartさんは「小規模なアプリならええけど、ある程度大きくなると、ある時点から探すのにめちゃ時間かかるわ」って思ったらしいです。

larave-modulesを使うと、
モジュール毎に独自のルート/コントローラー/モデル/ビュー/ビジネスロジックを設定できます。

例:塾のホームページ

例えば、マルチログイン機能が必要なWebサイトとして、塾のサイトを考えてみます。

  • メイン画面(月謝とか塾の紹介とか)
  • 管理者専用ページ
  • 塾生専用ページ

ここで、管理者専用ページと塾生専用ページは認証機能が必要だとします。
モジュール毎に開発すると、Main,Admin,Userみたいに分けて開発できるのでやりやすいと思います。

特にroute.phpがみやすい…とおもう…

Install

Composer

composer require nwidart/laravel-modules

Publish

パッケージの設定ファイルを実行して公開します。

php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"

Autoloading

このままだと、
モジュールは自動的にロードされないので、composer.jsonに追記をしてください。

{
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "Modules\\": "Modules/"
    }
  }
}

dump-autoload

autoloadの設定を変更したので、

composer dump-autoloadを忘れないように実行してください。

Creating a Module

php artisan module

無事にインストールできたら、上記のコマンドがつかえるようになります。

php artisan module:make <module-name>
モジュールを作成するにはこちらのコマンドを実行してください。

その他のコマンドについては、こちらから参考にしてください

Using

モジュールの作成ができれば、
ホームディレクトリにModulesというディレクトリが出来ていると思います。

ここから、いつもどおり開発をすすめることが出来ます。

注意としては、Custom namespacesを読めば分かりますが、
@include@extendにはモジュール名::をつけなきゃ丸コピでは動きません。