【Laminas】モジュールのディレクトリ構造を作る

Laminas

どーも!marusukeです!

これから、ご自身のローカル環境にインストールしたlaminas MVC skeletonのソースコードに、作ろうとしているアルバムモジュールのディレクトリを作っていきます!

そもそも、Laminasのディレクトリ構造はどんな形?

インストールしたソースファイルの位置はこんな感じだと思います。

laminas MVC skeleton
├── COPYRIGHT.md
├── Dockerfile
├── LICENSE.md
├── README.md
├── Vagrantfile
├── bin
├── composer.json
├── composer.lock
├── config
├── data
├── docker-compose.yml
├── module
├── phpcs.xml
├── phpunit.xml.dist
├── psalm.xml
├── public
└── vendor

簡単に紹介していきます。

config:このLaminas内のディレクトリの依存関係などを設定するところです。

data:データベース関係のことを扱うところです。

module:この中にこれから作る機能などを入れていくところで、今回一番触れる場所です。

vendor:Laminasコンポーネントが格納されているところです。呼び出してコンポーネントを使うだけなので直接触れることはありません。

次は、実際にディレクトリを作っていきましょう!

アルバムモジュールのディレクトリを作る

それでは、今回作る「アルバムモジュール」の説明を簡単にしますね!

言葉で表現すると、

「曲名」と「アーティスト名」を入力して保存、または編集や削除ができる(CRUD操作)一覧表のようなものです。

わかりにくいので、完成形の画像を。

これが出来上がります。

ここでは紹介しませんが、「Add new album」「Edit」「Delete」ボタンを押すとその画面に遷移して追加、編集や削除ができるようになります。

お待たせしました!早速手を動かして作っていきましょう!

先ほど紹介した「module」ディレクトリ内にアルバムモジュールのディレクトリを作っていきます。

以下の構造になります。

module
├── Album
│   ├── config
│   ├── src
│   │   ├── Controller
│   │   ├── Form
│   │   └── Model
│   └── view
│       └── album
│           └── album

上記のディレクトリ構造を作りましょう!

ここで注意点があります!

それは、頭文字の大文字、小文字の間違い、スペルミスがないようにしてください。

その理由を簡単に説明すると、Laminasに搭載されているModuleManagerという機能がそれぞれのディレクトリやファイルを名前(正確には名前空間)で判断して位置を特定するからです。

つまり、一文字でも間違えるとすぐにエラー表示になります。これを探すのが大変。。。

できましたでしょうか!次に進みましょう!

Module.phpを作る

Module.phpとは、

前に説明したModuleManagerがディレクトリ構造やファイルの位置を理解するための手がかりのPHPファイルです。

Module.phpの場所は、

 Album
│   ├── config
│   │   └── module.config.php
│   ├── src
│   │   ├── Controller
│   │   ├── Form
│   │   ├── Model
│   │   └── Module.php  <= ここです!
│   └── view
│       └── album
│           └── album

では、内容を書いていきます!

Module.php

<?php

namespace Album;

use Laminas\ModuleManager\Feature\ConfigProviderInterface;

class Module implements ConfigProviderInterface
{
    public function getConfig()
    {
        return include __DIR__ . '/../config/module.config.php';
    }
}

簡単に説明すると、このPHPファイルは、

1行目:名前(名前空間)がAlbumであり、

2行目:LaminasコンポーネントのConfigProviderInterfaceを使い、

3行目:ModuleクラスをConfigProviderInterfaceからインプリメントさせ、

4行目:getConfig()関数で

5行目:module.config.phpを返す

という流れです。

実は、詳しいことはmodule.config.phpに書いてあるよ。ということです!

ここまでの長文お疲れ様でした!

次の記事は、module.config.phpやこのアルバムモジュール自体の存在をcomposerに教えるcomposer.jsonの記述をやっていきます!

コメント

タイトルとURLをコピーしました