メニュー

ドキュメント

command コマンド

説明

 S2Baseの新しいコマンドを作成します。作成したコマンドは、コマンドリストに表示されます。

実行例

 s2base.php5 ディレクトリで phing を実行します。

% phing
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > com:

[ Command list ]
0 : (exit)
1 : command
2 : dao
3 : dicon
4 : entity
5 : goya
6 : interceptor
7 : module
8 : service
choice ? : 1            <--- 1 : command を選択

command name ? : sample

[ generate information ]
  command name : sample

confirm ? (y/n) : y     <--- 表示される情報を確認

[INFO ] create : /seasar.php/workspace/s2base.php5/app/commands/SampleCommand.class.php
                                                                  ↑
[ Command list ]                                          クラスファイルが作成されます。
0 : (exit)
1 : command
・・・

BUILD FINISHED

Total time: 18.0426 seconds
%
SampleCommand クラスの execute メソッドを編集します。
% cat app/commands/SampleCommand.class.php
<?php
class SampleCommand
    implements S2Base_GenerateCommand {

    public function getName(){
        return "sample";    <--- コマンドリストに表示されるコマンド名
    }

    public function execute(){
        print __METHOD__ . " called.\n";    <--- print 文を追記
    }

}
?>
%
再度 phing を実行すると sample コマンドが選択できます。
% phing
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > com:

[ Command list ]
0 : (exit)
1 : command
2 : dao
3 : dicon
4 : entity
5 : goya
6 : interceptor
7 : module
8 : service
9 : sample     <--- 新規作成したコマンドが表示されます。
choice ? : 9
SampleCommand::execute called.    <--- コマンドクラスの execute メソッドが実行されます。

BUILD FINISHED

Total time: 2.0847 seconds
%

dao コマンド

説明

 S2Dao で必要な dao インタフェース、entity クラス、dao コンポーネント定義済みの dicon ファイル、 テストクラスを生成します。

実行例

 dao コマンドの説明では、S2DaoのExampleで使用されているサンプルデータを用いて説明します。

mysql> desc CD;
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| ID      | int(11)      | NO   | PRI |         |       |
| TITLE   | varchar(100) | YES  |     |         |       |
| CONTENT | varchar(200) | YES  |     |         |       |
+---------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> select * from CD;
+----+----------+---------+
| ID | TITLE    | CONTENT |
+----+----------+---------+
| 1  | S2Dao!!! | hello!! |
+----+----------+---------+
1 row in set (0.00 sec)

mysql>

s2base.php5 ディレクトリで phing を実行します。

% phing
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > com:

[ Command list ]
0 : (exit)
1 : command
2 : dao
3 : dicon
4 : entity
5 : goya
6 : interceptor
7 : module
8 : service
choice ? : 2     <--- 2 : dao を選択

[ Module list ]
0 : (exit)
1 : Default
choice ? : 1     <--- 1 : Default モジュールを選択

use database ? (y/n) : n                       <--- データベースに接続してテーブル情報を取得
                                                    するかどうかを選択します。
dao interface name ? : CdDao                   <--- 英数字 [_a-zA-Z0-9] が使用可能です。

entity class name ? : CdEntity                 <--- 英数字 [_a-zA-Z0-9] が使用可能です。

table name ? [CdEntity] : CD                   <--- データベースのテーブル名を設定。

columns ? [id,name,--, , ] : id,title,content  <--- カンマ区切りでカラム名を入力

[ generate information ]
  module name         : Default
  dao interface name  : CdDao
  dao test class name : CdDaoTest
  entity class name   : CdEntity
  table name          : CD
  columns             : id, title, content
  dao dicon file name : CdDao.dicon

confirm ? (y/n) : y                                 <--- 表示される情報を確認
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/dao/CdDao.class.php
[INFO ] create : /seasar.php/workspace/s2base.php5/test/modules/Default/dao/CdDaoTest.class.php
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/dicon/CdDao.dicon
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/entity/CdEntity.class.php

[ Command list ]
0 : (exit)
1 : command
・・・

BUILD FINISHED

Total time: 30.5662 seconds
%
daoコマンドにより、PHPUnit2を用いたUnitTestクラスが作成されます。phing コマンドに test 引数を付けて実行すると、UnitTestが実行されます。
% phing test -Dtd=modules/Default/dao     <--- -Dtd オプションで test ディレクトリ以下のディレクトリを
Buildfile: /seasar.php/workspace/s2base.php5/build.xml                                  指定できます。

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > test:

CdDaoTest::testA
 [phpunit2] Testsuite: CdDaoTest
 [phpunit2] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.07924 sec

BUILD FINISHED

Total time: 0.6863 seconds
%
dao コマンドにより生成されるDaoインタフェースは、デフォルトでいくつかのメソッドが定義済みです。
% more app/modules/Default/dao/CdDao.class.php
<?php
interface CdDao {
    const BEAN = "CdEntity";

    public function findAllList();
    //public function findAllArray();
    //public function update(CdEntity $entity);
    //public function insert(CdEntity $entity);
    //public function delete(CdEntity $entity);
}
?>
%
例として、findAllListメソッドを実行してみます。まず、テストクラスにテストメソッドを追加します。
% more test/modules/Default/dao/CdDaoTest.class.php
<?php
class CdDaoTest extends PHPUnit2_Framework_TestCase {
    private $module = "Default";
    private $container;                      <--- 各テストの前処理でS2Containerオブジェクトが設定されます。
    private $dao;                            <--- 各テストの前処理でDaoオブジェクトが設定されます。

    function __construct($name) {
        parent::__construct($name);
    }

    function testFindAllList() {            <--- 追加テストメソッド
        print __METHOD__ . "\n";
        $rows = $this->dao->findAllList();
        $entity = $rows[0];
        $this->assertTrue($entity instanceof CdEntity);
        $this->assertEquals($entity->getId(),'1');
        $this->assertEquals($entity->getTitle(),'S2Dao!!!');
        $this->assertEquals($entity->getContent(),'hello!!');
        print_r($entity);
    }

    function setUp(){
        print "\n";
        $moduleDir = S2BASE_PHP5_ROOT . "/app/modules/{$this->module}";
        $dicon = $moduleDir . "/dicon/CdDao" . S2BASE_PHP5_DICON_SUFFIX;
        include_once($moduleDir . "/{$this->module}.inc.php");
        $this->container = S2ContainerFactory::create($dicon);
        $this->dao = $this->container->getComponent("CdDao");
    }

    function tearDown() {
        $this->container = null;
        $this->dao = null;
    }
}
?>
%
テストを実行すると、データベースから取得したデータを格納したEntitiyオブジェクトが表示されます。
% phing test -Dtd=modules/Default/dao
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > test:

CdDaoTest::testFindAllList
CdEntity Object                          <--- print_r($entity) でデバッグとして表示しています。
(
    [id:private] => 1
    [title:private] => S2Dao!!!
    [content:private] => hello!!
)
 [phpunit2] Testsuite: CdDaoTest
 [phpunit2] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.43753 sec

BUILD FINISHED

Total time: 1.0303 second
%

dicon コマンド

説明

 XML形式のdiconファイルを生成します。

実行例

 s2base.php5 ディレクトリで phing を実行します。

% phing
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > com:

[ Command list ]
0 : (exit)
1 : command
2 : dao
3 : dicon
4 : entity
5 : goya
6 : interceptor
7 : module
8 : service
choice ? : 3     <--- 3 : dicon を選択

[ Module list ]
0 : (exit)
1 : Default
choice ? : 1     <--- 1 : Default モジュールを選択

dicon name ? : sample    <--- 英数字 [_a-zA-Z0-9] が使用可能です。

[ generate information ]
  module name     : Default
  dicon file name : sample.dicon

confirm ? (y/n) : y      <--- 表示される情報を確認
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/dicon/sample.dicon

[ Command list ]
0 : (exit)
1 : command
・・・

BUILD FINISHED

Total time: 38.8949 seconds
%
sample.dicon は空のダイコンファイルです。
% more app/modules/Default/dicon/sample.dicon
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>

</components>
%

entity コマンド

説明

 S2Dao で用いる Entity クラスを作成します。columns でカンマ区切りのカラム名を入力すると、対応するプロパティとアクセッサメソッドを追加します。

実行例

 s2base.php5 ディレクトリで phing を実行します。

% phing
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > com:

[ Command list ]
0 : (exit)
1 : command
2 : dao
3 : dicon
4 : entity
5 : goya
6 : interceptor
7 : module
8 : service
choice ? : 4     <--- 4 : entity を選択

[ Module list ]
0 : (exit)
1 : Default
choice ? : 1     <--- 1 : Default モジュールを選択

use database ? (y/n) : n                       <--- データベースに接続してテーブル情報を取得
                                                    するかどうかを選択します。
entity class name ? : DvdEntity                <--- 英数字 [_a-zA-Z0-9] が使用可能です。

table name ? [DvdEntity] : DVD                 <--- データベースのテーブル名を設定

columns ? [id,name,--, , ] : id,title,content  <--- カンマ区切りでカラム名を入力

[ generate information ]
  module name       : Default
  entity class name : DvdEntity
  table name        : DVD
  columns           : id, title, content

confirm ? (y/n) : y                               <--- 表示される情報を確認
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/entity/DvdEntity.class.php

[ Command list ]
0 : (exit)
1 : command
・・・

BUILD FINISHED

Total time: 38.7971 seconds
%
columns で、id、title、content を指定したので、3つのプロパティとそれぞのアクセッサメソッドが実装されます。
% more app/modules/Default/entity/DvdEntity.class.php
<?php
class DvdEntity {
    const TABLE = "DVD";
    public function __construct(){}

    private $id;
    public function setId($val){$this->id = $val;}
    public function getId(){return $this->id;}

    private $title;
    public function setTitle($val){$this->title = $val;}
    public function getTitle(){return $this->title;}

    private $content;
    public function setContent($val){$this->content = $val;}
    public function getContent(){return $this->content;}

}
?>
%

goya コマンド

説明

 goya コマンドはサービス名を決めると、命名規則に従ってサービス、dao、enitity、ダイコンファイル、テストクラスを生成します。 service コマンド dao コマンドを同時に実行することとほぼ同じ処理になります。
例えば、サービス名を「 emp 」とすると、サービスは EmpService、dao は EmpDao、entity は EmpEntitiy となります。

実行例

 s2base.php5 ディレクトリで phing を実行します。

% phing
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > com:

[ Command list ]
0 : (exit)
1 : command
2 : dao
3 : dicon
4 : entity
5 : goya
6 : interceptor
7 : module
8 : service
choice ? : 5             <--- 5 : goya を選択

[ Module list ]
0 : (exit)
1 : Default
choice ? : 1             <--- 1 : Default モジュールを選択

service name ? : emp     <--- 英数字 [_a-zA-Z0-9] が使用可能です。

use database ? (y/n) : n                      <--- データベースに接続してテーブル情報を取得
                                                   するかどうかを選択します。
table name ? [emp] : EMP                      <--- データベースのテーブル名を設定

columns ? [id,name,--, , ] : id,name,dept     <--- カンマ区切りでカラム名を入力

[ generate information ]
  module name             : Default
  service name            : emp
  service interface name  : EmpService
  service class name      : EmpServiceImpl
  service test class name : EmpServiceImplTest
  dao interface name      : EmpDao
  dao test class name     : EmpDaoTest
  entity class name       : EmpEntity
  table name              : EMP
  columns                 : id, name, dept
  service dicon file name : EmpService.dicon

confirm ? (y/n) : y                           <--- 表示される情報を確認
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/service/EmpServiceImpl.class.php
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/service/EmpService.class.php
[INFO ] create : /seasar.php/workspace/s2base.php5/test/modules/Default/service/EmpServiceImplTest.class.php
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/dao/EmpDao.class.php
[INFO ] create : /seasar.php/workspace/s2base.php5/test/modules/Default/dao/EmpDaoTest.class.php
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/entity/EmpEntity.class.php
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/dicon/EmpService.dicon

[ Command list ]
0 : (exit)
1 : command
・・・

BUILD FINISHED

Total time: 1 minutes  13.67 seconds
%
goya コマンドで生成されるダイコンファイルでは、サービスと dao コンポーネントが登録済みです。
% more app/modules/Default/dicon/EmpService.dicon
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>
    <include path="%S2BASE_PHP5_ROOT%/app/commons/dicon/dao.dicon"/>
    <component class="EmpServiceImpl"/>
    <component class="EmpDao">
        <aspect>dao.interceptor</aspect>
    </component>
</components>
%
また、EmpServiceImplクラスでは EmpDao へのセッターメソッドが定義済みなので、サービスに dao が自動インジェクションされます。
% more app/modules/Default/service/EmpServiceImpl.class.php
<?php
class EmpServiceImpl
    implements EmpService {
    private $dao;

    public function __construct(){}

    public function setDao(EmpDao $dao){
        $this->dao = $dao;
    }
}
?>
%

interceptor コマンド

説明

 S2Aop の MethodInterceptor を実装するクラスを生成します。

実行例

 s2base.php5 ディレクトリで phing を実行します。

 % phing
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > com:

[ Command list ]
0 : (exit)
1 : command
2 : dao
3 : dicon
4 : entity
5 : goya
6 : interceptor
7 : module
8 : service
choice ? : 6     <--- 6 : interceptor を選択

[ Module list ]
0 : (exit)
1 : Default
choice ? : 1     <--- 1 : Default モジュールを選択

interceptor class name ? : HogeInterceptor     <--- 英数字 [_a-zA-Z0-9] が使用可能です。

[ generate information ]
  module name            : Default
  interceptor class name : HogeInterceptor

confirm ? (y/n) : y                            <--- 表示される情報を確認
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/interceptor/HogeInterceptor.class.php

BUILD FINISHED

Total time: 17.2060 seconds
%
S2Container_AbstractInterceptor を継承した interceptor を生成します。参照:独自実装によるInterceptor
% more app/modules/Default/interceptor/HogeInterceptor.class.php
<?php
class HogeInterceptor
    extends S2Container_AbstractInterceptor {

    /**
     * @param S2Container_MethodInvocation $invocation
     *    - $invocation->getThis()      : return target object
     *    - $invocation->getMethod()    : return ReflectionMethod of target method
     *    - $invocation->getArguments() : return array of method arguments
     */
    public function invoke(S2Container_MethodInvocation $invocation) {
        return $invocation->proceed();
    }
}
?>
%

module コマンド

説明

 app/modules ディレクトリと test/modules ディレクトリにモジュールディレクトリを作成します。 app/modules/モジュールディレクトリには、dao、dicon、entity、interceptor、serviceディレクトリが作成されます。

実行例

 s2base.php5 ディレクトリで phing を実行します。

% phing
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > com:

[ Command list ]
0 : (exit)
1 : command
2 : dao
3 : dicon
4 : entity
5 : goya
6 : interceptor
7 : module
8 : service
choice ? : 7               <--- 7 : module を選択

module name ? : Default    <--- モジュール名を入力。英数字 [_a-zA-Z0-9] が使用可能です。

[ generate information ]
  module name : Default    <--- モジュール情報を確認

confirm ? (y/n) : y
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/dao/
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/dicon/
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/entity/
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/interceptor/
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/service/
[INFO ] create : /seasar.php/workspace/s2base.php5/test/modules/Default
[INFO ] create : /seasar.php/workspace/s2base.php5/test/modules/Default/dao/
[INFO ] create : /seasar.php/workspace/s2base.php5/test/modules/Default/service/
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/Default.inc.php

[ Command list ]
0 : (exit)
1 : command
・・・

BUILD FINISHED

Total time: 8.2091 seconds
%
app ディレクトリと test ディレクトリ以下にDefaultモジュールが作成されます。
% ls app/modules/Default
Default.inc.php  dao  dicon  entity  interceptor  service
% ls test/modules/Default
dao  service
%

service コマンド

説明

 サービスインタフェース、実装クラス、ダイコンファイル、テストクラスを生成します。

実行例

 s2base.php5 ディレクトリで phing を実行します。

% phing
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > com:

[ Command list ]
0 : (exit)
1 : command
2 : dao
3 : dicon
4 : entity
5 : goya
6 : interceptor
7 : module
8 : service
choice ? : 8     <--- 8 : service を選択

[ Module list ]
0 : (exit)
1 : Default
choice ? : 1     <--- 1 : Default モジュールを選択

service interface name ? : CulcService     <--- 英数字 [_a-zA-Z0-9] が使用可能です。

[ generate information ]
  module name             : Default
  service interface name  : CulcService
  service class name      : CulcServiceImpl
  service test class name : CulcServiceImplTest
  service dicon file name : CulcService.dicon

confirm ? (y/n) : y                        <--- 表示される情報を確認
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/service/CulcServiceImpl.class.php
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/service/CulcService.class.php
[INFO ] create : /seasar.php/workspace/s2base.php5/test/modules/Default/service/CulcServiceImplTest.class.php
[INFO ] create : /seasar.php/workspace/s2base.php5/app/modules/Default/dicon/CulcService.dicon

[ Command list ]
0 : (exit)
1 : command
・・・

BUILD FINISHED

Total time: 12.7848 seconds
%
service コマンドにより PHPUnit2 を用いた UnitTest クラスが作成されます。phing コマンドに test 引数を付けて実行すると UnitTest を実行できます。
% phing test -Dtd=modules/Default/service
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > test:

CulcServiceImplTest::testA
 [phpunit2] Testsuite: CulcServiceImplTest
 [phpunit2] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.01326 sec

BUILD FINISHED

Total time: 0.5984 seconds
%
例として、サービスクラスに add メソッドを追加します。
% more app/modules/Default/service/CulcServiceImpl.class.php
<?php
class CulcServiceImpl
    implements CulcService{
    public function __construct(){}

    public function add($a,$b){         <--- 足し算メソッドを追加
        return $a + $b;
    }
}
?>
%
テストクラスに add メソッドをテストするテストメソッドを追加します。
% more test/modules/Default/service/CulcServiceImplTest.class.php
<?php
class CulcServiceImplTest extends PHPUnit2_Framework_TestCase {
    private $module = "Default";
    private $serviceName = "CulcService";
    private $container;                       <--- 各テストの前処理でS2Containerオブジェクトが設定されます。
    private $service;                         <--- 各テストの前処理でサービスオブジェクトが設定されます。

    function __construct($name) {
        parent::__construct($name);
    }

    function testAdd() {                  <--- テストメソッドを追加
        print __METHOD__ . "\n";
        $a = 2;
        $b = 3;
        $c = $this->service->add($a,$b);
        $this->assertEquals($c,5);
        print "$a + $b = $c \n";
    }

    function setUp(){
        print "\n";
        $moduleDir = S2BASE_PHP5_ROOT . "/app/modules/{$this->module}";
        $dicon = $moduleDir . "/dicon/CulcService" . S2BASE_PHP5_DICON_SUFFIX;
        include_once($moduleDir . "/{$this->module}.inc.php");
        $this->container = S2ContainerFactory::create($dicon);
        $this->service = $this->container->getComponent("CulcService");
    }

    function tearDown() {
        $this->container = null;
        $this->service = null;
    }

}
?>
%
phing コマンドに test 引数を付けて実行すると UnitTest を実行できます。
% phing test -Dtd=modules/Default/service
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > test:

CulcServiceImplTest::testAdd
2 + 3 = 5                     <--- デバッグとして、足し算式を表示します。
 [phpunit2] Testsuite: CulcServiceImplTest
 [phpunit2] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.01385 sec

BUILD FINISHED

Total time: 0.6278 seconds
%

test タスク

説明

 S2Base コマンドの service、dao、goya では、UnitTestが生成されます。これらの UnitTest を実行するタスクです。

実行例

 s2base.php5 ディレクトリで phing test を実行します。test ディレクトリにある全テストを実行します。

% phing test
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > test:
     [echo] test directory : test/         <--- test ディレクトリ以下の全テスト

CdDaoTest::testFindAllArray
CdEntity Object
(
    [id:private] => 1
    [title:private] => S2Dao!!!
    [content:private] => hello!!
)
 [phpunit2] Testsuite: CdDaoTest
 [phpunit2] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.20118 sec

CulcServiceImplTest::testAdd
2 + 3 = 5
 [phpunit2] Testsuite: CulcServiceImplTest
 [phpunit2] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.00723 sec

BUILD FINISHED

Total time: 0.8004 seconds
%
phing コマンドのオプション -Dプロパティ名 を使用して、test ディレクトリ以下の任意のディレクトリを指定できます。プロパティ名は「 td 」です。
% phing test -Dtd=modules/Default/dao
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > test:
     [echo] test directory : test/modules/Default/dao     <--- dao サブディレクトリ以下の全テスト

CdDaoTest::testFindAllArray
CdEntity Object
(
    [id:private] => 1
    [title:private] => S2Dao!!!
    [content:private] => hello!!
)
 [phpunit2] Testsuite: CdDaoTest
 [phpunit2] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.20403 sec

BUILD FINISHED

Total time: 0.7715 seconds
%
また、プロパティ名に「tt」を使用すると、指定したパスにマッチするテストを実行することができます。
% phing test -Dtt=**/Default/dao/Cd*
・・・

gen-dao タスク

説明

 S2Dao に付属の S2DaoSkeletonTask を用いて、app/commons/dao ディレクトリにデータベースの全テーブルの dao と entity を生成します。

実行例

 データベースに次のようなサンプルテーブルを複数用意しています。

mysql> show tables;
+-----------------------+
| Tables_in_s2container |
+-----------------------+
| CD                    |
| DEPT                  |
| EMP                   |
| SHELF                 |
+-----------------------+
4 rows in set (0.00 sec)

mysql>
s2base.php5 ディレクトリで phing gen-dao を実行します。
% phing gen-dao
Buildfile: /seasar.php/workspace/s2base.php5/build.xml

project > prepare:
      [php] Evaluating PHP expression: require_once('config/environment.inc.php')
      [php] Evaluating PHP expression: require_once('lib/S2Base/S2Base.cmd.php')

project > gen-dao:
     [gdao] [create] [DAO]: CDDao
     [gdao] [create] [BEAN]: CDEntity
     [gdao] [create] [DAO]: DEPTDao
     [gdao] [create] [BEAN]: DEPTEntity
     [gdao] [create] [DAO]: EMPDao
     [gdao] [create] [BEAN]: EMPEntity
     [gdao] [create] [DAO]: SHELFDao
     [gdao] [create] [BEAN]: SHELFEntity
     [gdao] [INFO] see the files
     [gdao] [file]: app/commons/dao/CDDao.class.php
     [gdao] [file]: app/commons/dao/CDEntity.class.php
     [gdao] [file]: app/commons/dao/DEPTDao.class.php
     [gdao] [file]: app/commons/dao/DEPTEntity.class.php
     [gdao] [file]: app/commons/dao/EMPDao.class.php
     [gdao] [file]: app/commons/dao/EMPEntity.class.php
     [gdao] [file]: app/commons/dao/SHELFDao.class.php
     [gdao] [file]: app/commons/dao/SHELFEntity.class.php

BUILD FINISHED

Total time: 0.6476 seconds
%
% ls app/commons/dao
CDDao.class.php     DEPTDao.class.php     EMPDao.class.php     SHELFDao.class.php
CDEntity.class.php  DEPTEntity.class.php  EMPEntity.class.php  SHELFEntity.class.php
%