---
title: "スキャフォールディング モジュールとコントローラー"
description: "CLIを使用してコントローラー、モジュール、プラグインを生成します。"
---

## コントローラー
```bash
./nibiru -c products
```
2つのファイルを作成します。
```
application/controller/productsController.php
application/view/templates/products.tpl
```
コントローラーのスタブ：
```php
<?php
namespace Nibiru;
use Nibiru\Adapter\Controller;

class productsController extends Controller
{
    public function pageAction() {
        View::assign(['title' => 'Products']);
    }

    public function navigationAction() {
        JsonNavigation::getInstance()->loadJsonNavigationArray();
    }
}
```
テンプレートのスタブ:
```smarty
{include 'shared/header.tpl'}
<body>
{include file="navigation.tpl"}
<main class="container">
  <h1>{$title}</h1>
</main>
{include 'shared/footer.tpl'}
</body>
```
コントローラーはPHPファイルのみです。JSやCSSのスキャフォールディングはありませんので、アセットの接続を自分で管理できます。

## モジュール
```bash
./nibiru -m billing
```
作成します:
```
application/module/billing/
├── billing.php
├── interfaces/billing.php
├── plugins/
├── settings/billing.ini
└── traits/
```
メインクラスは `IModule` を実装し、モジュールのレジストリ構成を読み込むコンストラクタを公開しています。`-g` フラグを追加して、Graylog オブザーバーのワイヤリングをデフォルトで含めます：
```bash
./nibiru -m billing -g
```
`-g` が設定されている場合、スカフォールドは `Graylog` オブザーバーをインポートし、コンストラクタでアタッチし、キーの状態変化時に `notify()` を発行します。これにより、追加のプラッミングなしに GELF 対応の Graylog サーバーがモジュールイベントをキャッチすることができます。

## プラグイン

プラグインはモジュールの内部に存在します。
```bash
./nibiru -p invoices -m billing
```
`application/module/billing/plugins/invoices.php` を作成します：
```php
<?php
namespace Nibiru\Module\Billing\Plugin;
use Nibiru\Module\Billing\Billing;

class Invoices extends Billing
{
    public function listOpen(): array
    {
        return \Nibiru\Pdo::fetchAll(
            'SELECT * FROM invoices WHERE status = :s ORDER BY due_date',
            [':s' => 'open']
        );
    }
}
```
プラグインはモジュールから継承するため、レジストリ、設定、およびオブザーバーの仕組みを共有します。

## ブートストラップ (`-s`)

`./nibiru -s` はインストール後（または新しいチェックアウトを取得した後）に実行され、以下の操作を行います：

- `application/view/templates_c/` と `application/view/cache/` が存在しない場合は作成します。
- これらのフォルダの権限を確認し、ウェブサーバーユーザーで書き込み可能に設定します。
- 必要な PHP 拡張機能が読み込まれていることを確認します。
- INI ファイル内のデータベースドライバがこのバイナリビルドでサポートされていることを確認します。

繰り返し実行しても安全です。

## キャッシュクリア (`-cache-clear`)

SmartyのコンパイルキャッシュとレンダリングされたHTMLキャッシュを両方クリアします：
```bash
./nibiru -cache-clear
```
デプロイ後に実行してください：
- `.tpl` ファイルを変更した場合、
- `[ENGINE] キャッシング` 設定を変更した場合、
- Smarty プラグインを修正した場合。

キャッシュは次のリクエストで再生成されます。
