Affamative Way

前向きにグダグダいいながらコード書く

S2Ethnaを使って見る

以前、Ethnaを使ったプロジェクトを作ったころには
PDOのラッパーしたDBレイヤー自作してたけど*1
結局、SQL書くことには変わりないわけで・・・


最近はJavaのTorqueやらhibernateを触る機会があったり
RailsのARを使ってると、簡単なSQLなんて書くのも面倒になってくるわけで。。


MDB2もORMだけども結局、PDOの相手にはならんので・・・
PHP5.1.4でPDOとPEAR::DB, MDB2のベンチマーク


PDO使ったORMでEthnaと相性いいもんないかな〜って探してたら
S2Ethnaが昨日リリースされたので早速使って見る。
だいこんの日々 : S2Ethna v0.2リリースします

そもそも

Ethnaって何?

Ethna公式
greeと共に成長していったPHPフレームワーク

S2って何のことやねんっ!?

The Seasar Project
DIとAOPをサポートした軽量コンテナseasarプロジェクトのプレフィックス

DBレイヤーにS2Dao.PHP5を利用してるってこと

超約すると

ようするに、書き方覚えればとっても楽できるってこと♪

早速インストールしてみる

S2Ethna v0.2からサンプル付きのソースをダウンロードする

他、依存ライブラリは以下の通り

Ethna(v2.3.2推奨)
    ・PEARSmarty
  ・S2Container.PHP5(v1.1.3推奨、v1.2.0RC1可)
  ・Cache_Lite(条件付き必須)

  S2Dao.PHP5 を使用する場合には、以下のライブラリが必要です。
  ・S2Dao.PHP5(v1.1.2推奨、v1.2.0beta1不可)
  ・PDO

  データベースインポートツールを使用する場合には、以下のライブラリが必要
  です。
  ・PEAR::DB

実行環境は以下の通り

WindowsXP SP2
Apache2.2.4
PHP 5.2.2
MySQL 5.0.37

S2Container.PHP5のインストール

S2Container.PHP5(v1.1.3推奨、v1.2.0RC1可)
というわけで1.1.3を使うことにする

>pear install http://s2container.php5.seasar.org/download/S2Container-1.1.3.tgz
downloading S2Container-1.1.3.tgz ...
Starting to download S2Container-1.1.3.tgz (103,629 bytes)
.........done: 103,629 bytes
Did not download optional dependencies: pear/Cache_Lite, use --alldeps to download automatically
pear/S2Container can optionally use package "pear/Cache_Lite"
install ok: channel://pear.php.net/S2Container-1.1.3

S2Containerは内部でCache_Liteが(デフォルト設定では)使われるらしい


○S2Container_CacheSupport
http://s2container.php5.seasar.org/extension.html#cache-support

S2Container_CacheSupport では、S2ContainerFactory で生成される S2Container インスタンスの serialize データと、S2AOP で生成されるの AopProxy コードをキャッシュします。S2Container_CacheSupportの実装クラスとして、 S2Container_PearCacheLiteSupport、S2Container_MemcacheSupport、 S2Container_ZendCacheSupport があります。どの CacheSupport クラスを使用するかは、S2CONTAINER_PHP5_CACHE_SUPPORT_CLASS 定数で指定します。デフォルトは、S2Container_PearCacheLiteSupport です。

と他、ライブラリのサポートも行われているが

  • MemcacheSupport
  • ZendCacheSupport


ナンノコッチャ。。。。orz*2


無難にPEAR::CacheLiteを利用することにして追加インストール

>pear install Cache_Lite
downloading Cache_Lite-1.7.2.tgz ...
Starting to download Cache_Lite-1.7.2.tgz (29,055 bytes)
.........done: 29,055 bytes
install ok: channel://pear.php.net/Cache_Lite-1.7.2

S2Dao.PHP5のインストール

>pear install http://s2dao.php5.seasar.org/files/S2Dao-1.1.2.tgz
downloading S2Dao-1.1.2.tgz ...
Starting to download S2Dao-1.1.2.tgz (93,051 bytes)
.....................done: 93,051 bytes
install ok: channel://pear.php.net/S2Dao-1.1.2

早速、動かしてみる

これで依存するPEARライブラリをインストールは完了*3

>pear list
INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET:
=========================================
PACKAGE          VERSION  STATE
Cache_Lite       1.7.2    stable
DB               1.7.13   stable
PEAR             1.5.1    stable
S2Container      1.1.3    stable
S2Dao            1.1.2    stable

環境によって依存性を持たせたくないのでlib以下に依存ライブラリを配置した。
同様にSmartySmarty/smarty.class.phpでアクセスできる形で追加する。

用意できたパッケージごと公開ディレクトリに配置して確認してみると・・・

おおー
データベースインポートツール(デモンストレーション版) | S2Ethna v0.2で既存のDBから定義も取得できるし素敵やー


example| S2Ethna v0.2を作りながら勉強しまーす。


つづく

*1:条件分岐可能な形式のSQL書けて、Daoで取得形式を書いてあげればいい

*2:あとでちゃんと調べます。。。

*3:Ethnaはチャンネルが別なのでここに表示はされない