2007 Autumn S2Base とZend Framework klove 1
自己紹介 ハンドルネーム :klove S2Container.PHP5 コミッタ S2Base.PHP5コミッタ 2005 年 5 月から Seasar プロジェクトで活動中 普段は SI 業務 システム管理業務 2
もくじ はじめに S2Base について S2Base とは S2Base-2.0 デモ Zend Frameworkとの連携について Zend Framework について S2Baseとの連携 デモ 3
S2Base とは S2Container S2Dao を用いた開発を 支援するツール プロジェクト用のディレクトリ生成ク 各種クラスファイル テストファイルの生成 各種ダイコンファイルを用意 WEBフレームワークとの連携 4
レイヤ構成 GOYA の内部設計に従ったレイヤ構成 WEB 層 サービス層 DAO 層 WEB フレームワーク service AOP dao entity RDB クライアント S2Container 5
ディレクトリ構成 project s2base project/ +-- app/ +-- modules/ +-- config/ +-- lib/ +-- test/ +-- modules/ +-- var/ +-- vendor/ 6
ディレクトリ構成 modules s2base project/ +-- app/ +-- modules/ +-- default/ +-- dao/ +-- dicon/ +-- entity/ +-- interceptor/ +-- service/ +-- test/ +-- modules/ +-- default/ +-- dao/ +-- service/ app/ と test/ は同じディレクトリ構造 7
S2Base-2.02.0 S2Container-12 1.2 を使用 クラスインジェクションに対応 ダイコンファイルはほとんど無し PHPUnit3に移行 Phingはオプショナル s2base コマンドを多機能化 本日のデモは S2Base-2.0 を使用します 8
プラグイン プロジェクトプラグイン with ZF コマンドプラグイン AutoTest プラグイン SqliteCli プラグイン 9
デモ デモ sample プロジェクトの生成 default モジュールの作成 Dao の作成 Service の作成 UnitTest 10
S2Base with Zend Framework S2Base with Zend Framework 11
Zend Framework ライブラリ群 Acl Auth Cache Config Console Controller Date Db Feed Filter Gdata Http Json Locale Log Mail Measure Memory Mime Pdf Request Rest Search Server Service Session Translate Uri Validate View XmlRpc 12
Zend_Controller 処理の流れ リクエストレスポンス WEB サーバ URI 書き換え スタートスクリプト index.php アクションコントローラ生成 アクションコントローラのディスパッチ実行 フロントコントローラ ディスパッチャ フロントコントローラ生成 - ルータ リクエスト設定 - ディスパッチャ設定 - プラグイン設定 ルーティング - モジュール決定 - コントローラ決定 - アクション決定 リクエストに設定 プラグイン実行 ディスパッチループ アクションメソッド実行アクションコントローラ Zend_View レスポンス設定 サーバ ビュー テンプレート フレームワーク Model RDB ユーザ Zend_Db 13
S2Base との連携 S2Container と S2Dao が使える いろいろ生成コマンドが付いてくる UnitTest も生成される Zend_Controller と S2Container の連携がついてくる Smartyビューヘルパー Zend_Log 設定 ValidatePluginの追加 14
プロジェクトディレクトリ構成 s2base project/ +-- app/ +-- modules/ +-- config/ +-- lib/ +-- public/ +-- test/ +-- modules/ +-- var/ +-- vendor/ アプリケーション作成ディレクトリ WEB サーバで公開 UnitTest が生成されるディレクトリ 15
app ディレクトリ構成 s2base project/ http://localhost/index/search +-- app/ モジュール名 +-- modules/ コントローラ名 :index +-- default/ アクション名 :search +-- controllers/ +-- IndexController.php searchaction メソッド +-- models/ +-- index/ +-- dao/ S2Base 用のディレクトリ +-- entity/ +-- +-- views/ +-- scripts/ Zend +-- Framework index/ の +-- search.phtml モジューラディレクトリ構造の規約にあわせる +-- filters/ +-- helpers/ : なし (default) 16
s2base project/ +-- app/ +-- +-- test/ +-- modules/ +-- default/ +-- controllers/ +-- IndexControllerTest.php rt t +-- models/ +-- index/ +-- dao/ +-- model/ +-- service/ test ディレクトリ構成 app ディレクトリの構造にあわせる 17
ビューの連携 アクションヘルパーの形式 FlashMessenger Redirector ViewRenderer デフォルトはZend_Viewを使用します Smarty 用のヘルパーも付属しています <?php ### config/s2base_zf.inc.php /** *Smarty 設定 */ require_once('smarty/libs/smarty.class.php'); define('s2base_php5_use_smarty', SMARTY' true); 18
データベース設定 S2Dao.PHP5 用の DSN 設定ファイルで設定します app/commons/dicon/pdo.dicon <component name="datasource" class="s2container_pdodatasource"> <property name="dsn"> return 'sqlite:'. S2BASE_PHP5_VAR_DIR. '/db/s2base.db ' </property> </component> この設定はZend_DbのDefault PDO Adapterに反映されます 19
ログ設定 Zend_Log を使用します Zend_RegistryにLoggerインスタンスが登録されています $logger = Zend_Registry::get('logger'); $logger->debug('invalid value. '); デフォルトでは var/logs/zf.log に出力されます 20
入力値の検証プラグイン Zend_Validate を使用します フロントコントローラのプラグインとして組み込まれます 設定ファイルはアクションごとに生成されます 設定ファイルはZend_Config_Ini 形式で記述します [default] action = "bar [year : default] validate regex.pattern regex.msg 遷移先アクション リクエストパラメータ名 = int, regex" = "/^ d d d d$/" = "invalid year value. 使用可能なvalidate - alnum Zend_Validate_Alnum - alpha Zend_Validate_Alpha - date Zend_Validate_Date - float Zend_Validate_Float - int Zend_Validate_Int - ip Zend_Validate_Ip - regex Zend_Validate_Regex 21
S2Base Zf プラグイン コマンドタイプのプラグイン model-pager プラグイン scaffold プラグイン 22
デモ デモ sc2007 プロジェクトの生成 default モジュールの作成 goya コマンドの実行 admin モジュールの作成 model-pager コマンドの実行 23
Goyaと Model WEB 層 goya コマンドの場合 サービス層 DAO 層 default モジュール WEB フレームワーク IndexController goya アクション service GoyaService dao CdDao entity RDB クライアント admin モジュール WEB フレームワーク IndexContorller pager アクション EmpModel モデル層 model (Zend_Db_Table) model-pager コマンドの場合 Zend_Db_Table_Row 24
まとめ 今後の予定 S2Container.PHP5-1.2.0 2 のリリース S2Base.PHP5-2.0.0 のリリース with ZF の Functional Test の追加 with Symfony を追加 25
ありがとうございました 26