ethnam / generator
为Ethnam的代码生成器
Requires
- php: >=5.4.0
- ethnam/getopt: 1.*
Requires (Dev)
- phpunit/phpunit: 3.7.*
README
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 コマンド
(使い方)
$ 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。
- 语言和编码设置 也请参考
-
[-e|--encoding] (2.5.0 preview1以上)
- 指定项目中使用的编码。
- 默认为UTF-8。
- 语言和编码设置 也请参考
-
[Application ID]
- 应用程序ID。至少需要指定此内容。
- 大小写不敏感。
- 出于自动生成文件的方便,请不要指定以数字开头。
添加动作,视图等
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]
- 指定动作名称。至少需要指定此内容。
-
【补充1】"add-action Foo_Bar"和"add-action foo_bar"的区别
- 生成的文件名和类名相同。
- perform的返回值不同。('Foo_Bar'和'foo_bar')
- 两种形式都可以,但在add-view、add-template时,需要以相同的形式输入。
-
【补充2】"add-action Foo_Bar"和"add-action FooBar"的区别
- 生成的文件名不同。('Foo/Bar.php'和'FooBar.php')
- 生成的类名相同。
- perform的返回值不同。('Foo_Bar'和'FooBar')
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选项时才有意义。 - 仅指定meta标签中指定的编码。
- 语言和编码设置 也请参考
-
[-e|--encoding] (2.5.0 preview1以上)
- 指定项目中使用的编码。
- 默认为UTF-8。
- [view]
- 仅指定meta标签中指定的编码。
-
指定要添加的视图名称。至少需要指定此内容。
- 【补充1】"add-view Foo_Bar"和"add-view foo_bar"的区别
-
行为完全相同。但是,添加-t选项时,tpl文件名不同。(下文所述)
- 【补充2】"add-view Foo_Bar"和"add-view FooBar"的区别
-
添加模板文件。选项如下。
- 生成的文件名不同。('Foo/Bar.php'和'FooBar.php')
- 生成的类名相同。
add-template コマンド
(使い方)
$ ethna add-template [-b|--basedir=dir] [-s|--skelfile=file]
[-l|--locale] [-e|--encoding] [template]
指定要添加模板文件的项目所在的目录。
-
[-b|--basedir]
- 指定生成模板文件的原始骨架文件。可以指定相对/绝对路径。
- 省略时,从当前目录向上搜索父目录以自动查找项目。
-
[-s|--skelfile=file]
[template]- 如果找不到指定的文件,则按顺序搜索应用程序的 skel 目录、Ethna 本体的 skel 目录。
- 此选项在修改骨架时很有用。
-
[-l|--locale] (2.5.0 preview1以上)
指定区域(语言或文化规则)。- 默认为ja_JP。
- 因此,在项目模板目录以下创建指定区域名的目录。
仅当指定-t选项时才有意义。 - 语言和编码设置 也请参考
-
[-e|--encoding] (2.5.0 preview1以上)
指定项目中使用的编码。- 默认为UTF-8。
- [view]
-
指定要添加的模板名称。至少需要指定此内容。
- 【补充】"add-template Foo_Bar"和"add-template foo_bar"的区别
-
生成的文件名不同。('Foo_Bar'和'foo_bar')
- 与动作类中的prepare/perform返回的字符串完全一致。
- 必须完全一致。
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]
指定要添加的入口点启动的动作名称。- 例如,当在网关中指定www时,指定"admin",则会创建admin.php作为入口点,并继续添加admin操作。
添加应用程序对象、管理器
add-app-manager コマンド
(使い方)
$ ethna add-app-manager [-b|--basedir=dir] [app-manager name]
添加应用程序管理器。选项如下。
-
[-b|--basedir]
- 指定要添加应用程序管理器的项目所在目录。
- 省略时,从当前目录向上搜索父目录以自动查找项目。
-
(目前无法指定skelfile。)
-
[app-manager name]
- 应用程序管理器名称。至少需要指定此名称。
国际化(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的情况下,指定此选项。
- 指定此选项后,将自动生成po文件,而不是默认的ini文件。
- 对于生成的po文件,使用xgettext或msgmerge命令生成mo文件是用户的责任。
- [extdir1] [extdir2] ...
- 默认情况下,只检查项目内的app目录和template目录,但可以在命令的末尾添加任意目录。
- 在此指定的目录内的文件仅解释PHP脚本中的_et函数调用。
添加测试用例
添加测试用例时的注意事项
从Ethna 2.3.5开始,创建的测试默认会失败。也就是说,“创建了,就要写测试。”
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 コマンド
(使い方)
$ ethna add-view-test [-b|--basedir=dir] [-s|--skelfile=file] [view]
添加指定视图的测试脚本。
如果尚未创建相应的视图,则会产生警告,请注意。
选项如下。
- [-b|--basedir]
- 指定要添加视图测试的项目所在目录。
- 省略时,从当前目录向上搜索父目录以自动查找项目。
- [-s|--skelfile=file]
- 指定用作生成视图测试的骨架文件。可以指定相对/绝对路径。
- 如果找不到指定的文件,则按顺序搜索应用程序的 skel 目录、Ethna 本体的 skel 目录。
- 此选项在修改骨架时很有用。
- 指定要添加的视图名称。至少需要指定此内容。
- 指定要创建的测试视图名称。至少需要指定此名称。
add-test コマンド
(使い方)
$ ethna add-test [-b|--basedir=dir] [-s|--skelfile=file] [name]
添加通用测试脚本。用于创建应用程序管理器等、动作或视图之外的测试案例。
选项如下。
- [-b|--basedir]
- 指定要添加测试的项目所在目录。
- 省略时,从当前目录向上搜索父目录以自动查找项目。
- [-s|--skelfile=file]
- 指定用作生成测试的骨架文件。可以指定相对/绝对路径。
- 如果找不到指定的文件,则按顺序搜索应用程序的 skel 目录、Ethna 本体的 skel 目录。
- 此选项在修改骨架时很有用。
- [name]
- 指定要创建的测试名称。至少需要指定此名称。
其他
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
命令及其子命令是由本包下的类群实现的。如果要更改行为或实现自定义命令,请在本存储库上fork并创建喜欢的功能。
Ethnam本体即使没有ethnam-generator
也可以运行。
Ethnam\Generator的实现
Ethnam\Generator是独立于Ethnam本体的包。
在ethnam-generator命令中创建Ethna_Controller实例。
在向Ethna本体目录或应用程序目录下达指示时,建议先使用以下方法获取各个控制器实例,然后使用$ctl->getDirectory('tmp')等。
- getEthnaController()
- 获取Ethna_Controller实例。这是Ethna本体中Ethna_Controller.php中定义的Ethna_Controller本身。
- getAppController($app_dir)
- 从指定的目录中查找应用程序控制器,并返回其实例。
*1检查表单定义的原因是,由于表单定义是成员变量,其初始化必须是常量,否则在函数定义的返回值中初始化会导致FATAL ERROR