PHPackages                             ethnam/generator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. ethnam/generator

ActiveLibrary[Framework](/categories/framework)

ethnam/generator
================

code generator for Ethnam

v1.0.5(10y ago)07561BSD-4-ClausePHPPHP &gt;=5.4.0

Since May 2Pushed 10y ago1 watchersCompare

[ Source](https://github.com/ethnamphp/generator)[ Packagist](https://packagist.org/packages/ethnam/generator)[ Docs](https://github.com/DQNEO/ethnam-generator)[ RSS](/packages/ethnam-generator/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (12)Used By (1)

Ethnam Generator
================

[](#ethnam-generator)

Ethnamのコードジェネレータ

Ethnam では、プロジェクトの作成から、作成されたプロジェクトに関わる様々な操作を ethna コマンドと呼ばれるコマンドラインから行えるようになっています。

ethna コマンドには様々なサブコマンドが用意されており、プロジェクトに対する様々な操作が行えます。このページでは、ethnaコマンドで出来ることをリファレンスとして紹介します。

- ethnaコマンドリファレンス
    - プロジェクトの作成
        - add-project コマンド
    - アクション, ビューの追加など
        - add-action コマンド
        - add-view コマンド
        - add-template コマンド
        - add-entry-point コマンド
    - アプリケーションオブジェクト、マネージャの追加
        - add-app-manager コマンド
    - 国際化(i18n)
        - i18n コマンド
    - テストケースの追加
        - テストケース追加に当たっての注意
        - add-action-test コマンド
        - add-view-test コマンド
        - add-test コマンド
    - PEAR パッケージ管理
        - pear-local コマンド
    - プラグイン関連
        - list-plugin コマンド
        - install-plugin, upgrade-plugin コマンド
        - uninstall-plugin コマンド
        - info-plugin コマンド
        - channel-update コマンド
        - make-plugin-package コマンド
    - その他
        - clear-cache コマンド
- ethna コマンドを拡張する
    - Ethna\_Handle について

| いちい | - | 新規作成 | | mumumu | 2008-07-30 | 最新の状態を反映 | | DQNEO | 2010-05-23 | アクション名指定の際の大文字小文字の違いを解説 |

### プロジェクトの作成

[](#プロジェクトの作成)

#### add-project コマンド

[](#add-project-コマンド)

```
(使い方)
$ ethna add-project [-b|--basedir=dir] [-s|--skeldir]
                    [-l|--locale] [-e|--encoding] [Application id]

```

プロジェクトと、それに付随する必須ファイルを自動生成します。作成しようとした先に、既に同名のプロジェクトが存在する場合は、不足しているファイルのみ作成されます。\[Application id\]（アプリケーションID) の指定が最低限必要です。

オプションは以下の通りです。

- \[-b|--basedir\]

    - プロジェクトを作成するディレクトリを指定します。
    - ここで指定されたディレクトリ下に、\[Application id\] で指定されたディレクトリが作成されます。
    - デフォルトはカレントディレクトリです。
- \[-s|--skeldir\]

    - Ethnaは自動生成されるファイルのスケルトンを持っており、それに基づきプロジェクトを生成します。このオプションでディレクトリを指定すると、そこにあるスケルトンファイルが優先されます。
    - ファイル名は Ethna本体の skelディレクトリ にあるものと同じでなければなりません。
    - このオプションはスケルトンを改造していた場合に有用です。
- \[-l|--locale\] (2.5.0 preview1以降)

    - ロケール（言語や文化の規則)を指定します。
    - デフォルトはja\_JPです。
    - [言語とエンコーディングの設定](dev_guide-app-setlanguage.md) も参照して下さい
- \[-e|--encoding\] (2.5.0 preview1以降)

    - プロジェクトで使用するエンコーディングを指定します。
    - デフォルトはUTF-8です。
    - [言語とエンコーディングの設定](dev_guide-app-setlanguage.md) も参照して下さい
- \[Application ID\]

    - アプリケーションIDです。最低限これだけは指定して下さい。
    - 大文字小文字は区別されません。
    - 自動生成されるファイルの都合上、先頭に数値を指定してはいけません。

### アクション, ビューの追加など

[](#アクション-ビューの追加など)

#### add-action コマンド

[](#add-action-コマンド)

```
(使い方)
$ ethna add-action [-b|--basedir=dir] [-s|--skelfile=file]
                   [-g|--gateway=www|cli|xmlrpc] [-w|--with-unittest]
                   [-u|--unittestskel=file] [action]

```

アクションをプロジェクトに追加します。オプションは以下の通りです。

- \[-b|--basedir\]

    - アクションを追加したいプロジェクトのあるディレクトリを指定します。
    - 省略時は、現在のディレクトリから親ディレクトリをたどってプロジェクトを自動的に探索します。
- \[-s|--skelfile=file\]

    - アクションファイルを生成する元となるスケルトンファイルを指定します。相対／絶対パスが指定できます。
    - 指定されたファイルが見つからないときはアプリケーションのskelディレクトリ、Ethna本体のskelディレクトリを順に探します。
    - 省略時は、gatewayの指定に従い、プロジェクトのskel/skel.{action,actio\_cli,action\_xmlrpc}.phpが使われます。
    - このオプションはスケルトンを改造していた場合に有用です。
- \[-g|--gateway=www|cli|xmlrpc\]

    - アクションのゲートウェイを指定します。
    - それぞれaction, action\_cli,action\_xmlrpcディレクトリの下にアクションが追加されます。
    - 省略時は www が指定されたものとみなされます。
- \[-w|--with-unittest\] (2.3.5 以降)

    - ユニットテストファイルを同時に生成します。
    - add-action-test を同時に実行したことと同じです。
- \[-u|--unittestskel=file\] (2.3.5 以降)

    - ユニットテストファイルを作るときのスケルトンを指定します。
    - -w オプションが指定されない場合は、このオプションは無視されます。
- \[action\]

    - アクション名を指定します。最低限これだけは指定して下さい。
- 【補足１】"add-action Foo\_Bar"と "add-action foo\_bar"の違い

    - 生成されるファイル名・クラス名は同じです。
    - performのreturn値は異なります。( 'Foo\_Bar' と 'foo\_bar' )
    - どちらの形式でも可能ですが、add-view, add-templateする際は、同じ形式で入力する必要があります。
- 【補足２】"add-action Foo\_Bar"と "add-action FooBar"の違い

    - 生成されるファイル名は異なります。( 'Foo/Bar.php' と 'FooBar.php' )
    - 生成されるクラス名は同じです。
    - performのreturn値は異なります。( 'Foo\_Bar' と 'FooBar' )

#### add-view コマンド

[](#add-view-コマンド)

```
(使い方)
$ ethna add-view [-b|--basedir=dir] [-s|--skelfile=file]
                 [-w|--with-unittest] [-u|--unittestskel=file]
                 [-t|--template] [-l|--locale] [-e|--encoding] [view]

```

ビューをプロジェクトに追加します。オプションは以下の通りです。

- \[-b|--basedir\]

    - ビューを追加したいプロジェクトのあるディレクトリを指定します。
    - 省略時は、現在のディレクトリから親ディレクトリをたどってプロジェクトを自動的に探索します。
- \[-s|--skelfile=file\]

    - ビューファイルを生成する元となるスケルトンファイルを指定します。相対／絶対パスが指定できます。
    - 指定されたファイルが見つからないときはアプリケーションのskelディレクトリ、Ethna本体のskelディレクトリを順に探します。
    - このオプションはスケルトンを改造していた場合に有用です。
- \[-t|--template\]

    - ビューと同じ名前のテンプレートを追加します。add-templateを同時に実行したのと同じです。
- \[-w|--with-unittest\] (2.3.5 以降)

    - ユニットテストファイルを同時に生成します。add-view-test を同時に実行したことと同じです。
    - -t オプション を指定した場合は、この指定は無視されます。
- \[-u|--unittestskel=file\] (2.3.5 以降)

    - ユニットテストファイルを作るときのスケルトンファイルを指定します。
    - -t オプション を指定した場合は、この指定は無視されます。
- \[-l|--locale\] (2.5.0 preview1以降)

    - ロケール（言語や文化の規則)を指定します。
    - デフォルトはja\_JPです。
    - これにより、プロジェクトのテンプレートディレクトリ以下に、指定したロケール名のディ
        レクトリが作られます。
    - -t オプションを指定したときのみ意味を持ちます。
    - [言語とエンコーディングの設定](dev_guide-app-setlanguage.md) も参照して下さい
- \[-e|--encoding\] (2.5.0 preview1以降)

    - プロジェクトで使用するエンコーディングを指定します。
    - デフォルトはUTF-8です。
    - meta タグで指定するエンコーディングを指定する意味しかありません。
    - -t オプションを指定したときのみ意味を持ちます。
- \[view\]

    - 追加したいビュー名を指定します。最低これだけは指定して下さい。
- 【補足１】"add-view Foo\_Bar"と "add-view foo\_bar"の違い

    - 挙動は全く同じです。ただし、-tオプションをつけると、tplファイル名が異なります。（後述)
- 【補足２】"add-view Foo\_Bar"と "add-view FooBar"の違い

    - 生成されるファイル名は異なります。( 'Foo/Bar.php' と 'FooBar.php' )
    - 生成されるクラス名は同じです。

#### add-template コマンド

[](#add-template-コマンド)

```
(使い方)
$ ethna add-template [-b|--basedir=dir] [-s|--skelfile=file]
                     [-l|--locale] [-e|--encoding] [template]

```

テンプレートファイルを追加します。オプションは以下の通りです。

- \[-b|--basedir\]

    - テンプレートファイルを追加したいプロジェクトのあるディレクトリを指定します。
    - 省略時は、現在のディレクトリから親ディレクトリをたどってプロジェクトを自動的に探索します。
- \[-s|--skelfile=file\]
    テンプレートファイルを生成する元となるスケルトンファイルを指定します。相対／絶対パスが指定できます。

    - 指定されたファイルが見つからないときはアプリケーションのskelディレクトリ、Ethna本体のskelディレクトリを順に探します。
    - このオプションはスケルトンを改造していた場合に有用です。
- \[-l|--locale\] (2.5.0 preview1以降)
    ロケール（言語や文化の規則)を指定します。

    - デフォルトはja\_JPです。
    - これにより、プロジェクトのテンプレートディレクトリ以下に、指定したロケール名のディ
        レクトリが作られます。
    - [言語とエンコーディングの設定](dev_guide-app-setlanguage.md) も参照して下さい
- \[-e|--encoding\] (2.5.0 preview1以降)
    プロジェクトで使用するエンコーディングを指定します。

    - デフォルトはUTF-8です。
    - meta タグで指定するエンコーディングを指定する意味しかありません。
- \[template\]

    - 追加したいテンプレート名を指定します。最低これだけは指定して下さい。
- 【補足】"add-template Foo\_Bar"と "add-template foo\_bar"の違い

    - 生成されるファイル名は異なります。( 'Foo\_Bar' と 'foo\_bar' )
    - アクションクラスのprepare/performが返す文字列と完全一致している必要があります。

#### add-entry-point コマンド

[](#add-entry-point-コマンド)

```
(使い方)
$ ethna add-entry-point [-b|--basedir=dir] [-s|--skelfile=file]
                        [-g|--gateway=www|cli] [action]

```

エントリポイントと対応するアクションを追加します。エントリポイントは、wwwディレクトリに置かれ、コントローラーを呼び出す役割を果たします。

オプションは以下の通りです。

- \[-b|--basedir\]

    - エントリポイントを追加したいプロジェクトのあるディレクトリを指定します。
    - 省略時は、現在のディレクトリから親ディレクトリをたどってプロジェクトを自動的に探索します。
- \[-s|--skelfile=file\]

    - エントリポイントを生成する元となるスケルトンファイルを指定します。相対／絶対パスが指定できます。
    - 指定されたファイルが見つからないときはアプリケーションのskelディレクトリ、Ethna本体のskelディレクトリを順に探します。
    - このオプションはスケルトンを改造していた場合に有用です。
- \[-g|--gateway=www|cli\]
    アクションのゲートウェイを指定します。

    - それぞれaction, action\_cli ディレクトリの下にアクションが追加されます。
    - 省略時は www が指定されたものとみなされます。
- \[action\]
    追加したいエントリポイントで起動するアクション名を指定します。

    - 例えばgatewayにwww を指定した状態で "admin" を指定すると、エントリポイントとしてadmin.phpが作られ、続けてadminアクションが追加されます。

### アプリケーションオブジェクト、マネージャの追加

[](#アプリケーションオブジェクトマネージャの追加)

#### add-app-manager コマンド

[](#add-app-manager-コマンド)

```
(使い方)
$ ethna add-app-manager [-b|--basedir=dir] [app-manager name]

```

アプリケーションマネージャを追加します。オプションは以下の通りです。

- \[-b|--basedir\]

    - アプリケーションマネージャを追加したいプロジェクトのあるディレクトリを指定します。
    - 省略時は、現在のディレクトリから親ディレクトリをたどってプロジェクトを自動的に探索します。
- (現在のところskelfileを指定することはできません。)
- \[app-manager name\]

    - アプリケーションマネージャ−名。最低これだけは指定して下さい。

### 国際化(i18n)

[](#国際化i18n)

#### i18n コマンド

[](#i18n-コマンド)

```
この機能を使うには、Ethna 2.5.0 preview2 以降が必要です

(使い方)
$ ethna i18n [-b|--basedir=dir] [-l|--locale=locale] [-g|--gettext] [extdir1] ...

```

プロジェクト内部のPHPスクリプト(テストスクリプトは除く)、テンプレートファイルを全て調べ、翻訳の対象となるメッセージを全て抜きだし、メッセージカタログの雛形を自動生成します。 実際に調べられ、抜き出されるメッセージは、以下の部分が対象になります\*1

```
1. app ディレクトリ内のPHPスクリプトの、_et 関数の呼び出し箇所全て
2. app ディレクトリ内の ActionForm のフォーム定義のうち、以下の部分
  a) name
  b) required_error
  c) type_error
  d) min_error
  e) max_error
  f) regexp_error
3. template ディレクトリ内の、i18n修正子の呼び出し箇所全て

```

既に\[ini|po\]ファイルが存在していた場合、iniファイル(デフォルト) の場合は 自動的に既にある翻訳をマージしてファイルを上書きします。gettext(\[-g|--gettext\] を指定)の場合は、別に新しいファイルを作成し、古いファイルはそのままにします。

コマンドのオプションは以下の通りです。

- \[-b|--basedir=dir\]
    - プロジェクトのあるディレクトリを指定します。
    - 省略時は、現在のディレクトリから親ディレクトリをたどってプロジェクトを自動的に探索します。
- \[-l|--locale=locale\]
    - 生成したいカタログのロケールを指定します。
    - デフォルトは ja\_JP です。
    - 実際のカタログは \[appid\]/locale/\[指定したロケール名\]/LC\_MESSAGES/\[指定したロケール名\].\[ini|po\] に作られます。デフォルトでは ini ファイルが生成されます。
- \[-g|--gettext\]
    - gettext を使う場合、このオプションを指定します。
    - このオプションを指定すると、デフォルトの iniファイルではなく、po ファイルが自動生成されます。
    - 生成された po ファイルに対して、xgettext や msgmerge コマンドを使用して mo ファイルを生成するのはユーザの責任です。
- \[extdir1\] \[extdir2\] ...
    - デフォルトでは プロジェクト内の app ディレクトリ内と、templateディレクトリしか調べられませんが、任意のディレクトリをコマンドの最後に追加できます。
    - ここで指定したディレクトリ内のファイルは、PHPスクリプトの \_et 関数の呼び出ししか解釈されません

### テストケースの追加

[](#テストケースの追加)

#### テストケース追加に当たっての注意

[](#テストケース追加に当たっての注意)

Ethna 2.3.5 以降では、作成したテストはデフォルトで失敗するようになっています。要するに「作った以上、テストを書いて下さいネ」ということです。

#### add-action-test コマンド

[](#add-action-test-コマンド)

```
(使い方)
$ ethna add-action-test [-b|--basedir=dir] [-s|--skelfile=file] [action]

```

指定されたアクションのテストスクリプトを追加します。
対応するアクションがまだ作成されていない場合には警告が生成されるので注意して下さい。

オプションは以下の通りです。

- \[-b|--basedir\]
    - アクションのテストを追加したいプロジェクトのあるディレクトリを指定します。
    - 省略時は、現在のディレクトリから親ディレクトリをたどってプロジェクトを自動的に探索します。
- \[-s|--skelfile=file\]
    - アクションのテストを生成する元となるスケルトンファイルを指定します。相対／絶対パスが指定できます。
    - 指定されたファイルが見つからないときはアプリケーションのskelディレクトリ、Ethna本体のskelディレクトリを順に探します。
    - このオプションはスケルトンを改造していた場合に有用です。
- \[action\]
    - 作成するテストのアクション名を指定します。最低これだけは指定して下さい。

#### add-view-test コマンド

[](#add-view-test-コマンド)

```
(使い方)
$ ethna add-view-test [-b|--basedir=dir] [-s|--skelfile=file] [view]

```

指定されたビューのテストスクリプトを追加します。
対応するビューがまだ作成されていない場合には警告が生成されるので注意して下さい。

オプションは以下の通りです。

- \[-b|--basedir\]
    - ビューのテストを追加したいプロジェクトのあるディレクトリを指定します。
    - 省略時は、現在のディレクトリから親ディレクトリをたどってプロジェクトを自動的に探索します。
- \[-s|--skelfile=file\]
    - ビューのテストを生成する元となるスケルトンファイルを指定します。相対／絶対パスが指定できます。
    - 指定されたファイルが見つからないときはアプリケーションのskelディレクトリ、Ethna本体のskelディレクトリを順に探します。
    - このオプションはスケルトンを改造していた場合に有用です。
- \[view\]
    - 作成するテストのビュー名を指定します。最低これだけは指定して下さい。

#### add-test コマンド

[](#add-test-コマンド)

```
(使い方)
$ ethna add-test [-b|--basedir=dir] [-s|--skelfile=file] [name]

```

一般的なテストスクリプトを追加します。アプリケーションマネージャー等、アクションやビュー以外のテストケース作成に使います。

オプションは以下の通りです。

- \[-b|--basedir\]
    - テストを追加したいプロジェクトのあるディレクトリを指定します。
    - 省略時は、現在のディレクトリから親ディレクトリをたどってプロジェクトを自動的に探索します。
- \[-s|--skelfile=file\]
    - テストを生成する元となるスケルトンファイルを指定します。相対／絶対パスが指定できます。
    - 指定されたファイルが見つからないときはアプリケーションのskelディレクトリ、Ethna本体のskelディレクトリを順に探します。
    - このオプションはスケルトンを改造していた場合に有用です。
- \[name\]
    - 作成するテスト名を指定します。最低これだけは指定して下さい。

### その他

[](#その他)

#### clear-cache コマンド

[](#clear-cache-コマンド)

```
(使い方)
$ ethna clear-cache [-b|--basedir=dir] [-a|--any-tmp-files]
                    [-s|--smarty] [-p|--pear] [-c|--cachemanager]

```

アプリケーションのキャッシュファイルを削除します。

- \[-s|--smarty\]
    - smartyのキャッシュ、コンパイル済みファイルを削除
- \[-c|--cachemanager\]
    - Cachemanager\_Localfileが作るキャッシュファイルを削除します。デフォルトではアプリケーションの tmp/.cache/ 以下のファイルです。
- \[-p|--pear\]
    - ethnaコマンドで使っているpearチャンネル関連のキャッシュを削除します。
- \[-a|--any-tmp-files\]
    - アプリケーションの tmp/ 以下のファイルをすべて削除します。

ethnam-generator コマンドを拡張する
--------------------------

[](#ethnam-generator-コマンドを拡張する)

`ethnam-generator`コマンド及びサブコマンドは、本パッケージ配下のクラス群によって実現さられています。 挙動を変更したい・独自コマンドを実装したい場合は本レポジトリをforkしてお好きなものを作るよいでしょう。

Ethnam本体は、`ethnam-generator`がなくても動きます。

### Ethnam\\Generatorの実装について

[](#ethnamgeneratorの実装について)

Ethnam\\Generator はEthnam本体からは独立したパッケージです。

ethnam-generatorコマンド内でEthna\_Controllerのインスタンスが作られます。

Ethna本体のディレクトリやアプリケーションのディレクトリに何か指示をするときは、いったん以下のメソッドで各コントローラを取得し、$ctl-&gt;getDirectory('tmp')とかするといいと思います。

- getEthnaController()
    - Ethna\_Controllerのインスタンスを取得します。これはEthna本体のEthna\_Controller.phpで定義されたEthna\_Controllerそのものです。
- getAppController($app\_dir)
    - 指定されたディレクトリからアプリケーションのコントローラをさがし、そのインスタンスを返します。

---

\*1フォーム定義を調べるのは、フォーム定義はメンバ変数であり、その初期化は定数でなければならないことから、これを関数定義の戻り値で初期化するとFATAL ERRORになるためです

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 79% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~5 days

Recently: every ~11 days

Total

11

Last Release

3985d ago

Major Versions

v0.1.3 → v1.0.02015-05-05

### Community

Maintainers

![](https://www.gravatar.com/avatar/7f6098905fa9174647908a38741efcecf355059685cae608f6184ecdfa94d861?d=identicon)[DQNEO](/maintainers/DQNEO)

---

Top Contributors

[![DQNEO](https://avatars.githubusercontent.com/u/188741?v=4)](https://github.com/DQNEO "DQNEO (863 commits)")[![sotarok](https://avatars.githubusercontent.com/u/29064?v=4)](https://github.com/sotarok "sotarok (207 commits)")[![mumumu](https://avatars.githubusercontent.com/u/26536?v=4)](https://github.com/mumumu "mumumu (12 commits)")[![riaf](https://avatars.githubusercontent.com/u/29904?v=4)](https://github.com/riaf "riaf (3 commits)")[![fukazawa-tinami](https://avatars.githubusercontent.com/u/4167621?v=4)](https://github.com/fukazawa-tinami "fukazawa-tinami (2 commits)")[![ucchee](https://avatars.githubusercontent.com/u/1192560?v=4)](https://github.com/ucchee "ucchee (1 commits)")[![hiwasa](https://avatars.githubusercontent.com/u/2560109?v=4)](https://github.com/hiwasa "hiwasa (1 commits)")[![nulltask](https://avatars.githubusercontent.com/u/291185?v=4)](https://github.com/nulltask "nulltask (1 commits)")[![polidog](https://avatars.githubusercontent.com/u/284778?v=4)](https://github.com/polidog "polidog (1 commits)")[![ryuzo98](https://avatars.githubusercontent.com/u/1152053?v=4)](https://github.com/ryuzo98 "ryuzo98 (1 commits)")

---

Tags

frameworkethnam

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ethnam-generator/health.svg)

```
[![Health](https://phpackages.com/badges/ethnam-generator/health.svg)](https://phpackages.com/packages/ethnam-generator)
```

###  Alternatives

[hemp/presenter

Easy Model Presenters in Laravel

247592.6k1](/packages/hemp-presenter)[pestphp/pest-plugin-stressless

Stressless plugin for Pest

67792.6k16](/packages/pestphp-pest-plugin-stressless)[ethnam/ethnam

web application framework.

2614.8k1](/packages/ethnam-ethnam)[wpstarter/framework

The WpStarter Framework - Laravel Framework for WordPress

1810.1k4](/packages/wpstarter-framework)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
