バージョン選択

フォーラム

メニュー

オンライン状況

70 人のユーザが現在オンラインです。 (64 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 70
もっと...

サイト内検索

機能要望 > その他 > EC-CUBE で O/R Mapper 的なもの

その他

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
nanasess
投稿日時: 2009/10/27 11:05
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2314
EC-CUBE で O/R Mapper 的なもの
大河内です.

通勤途中に閃いたので書いてみました.

EC-CUBE で Java の JDO のような O/R マッパーが実現できないか... というアイディアです.
あくまでも案なので, 本当に実現できるかどうか未定ですが, いかがでしょうか?

最近のトレンドな PHP のフレームワークをよく知らないので, もっと良いのがあるよとか, 教えていただけたらと思います.

PHP4, 5 対応で, ここまでやってるのは見たことないので, 無いものは作ってしまえ的な発想です.

あわよくば, EC-CUBE2.5 で実現できたらなぁと思います.
みなさまのご意見をお聞かせください.
良さげな感じでしたら, チャレンジしてみたいと思います.

■ 概要

Java の JDO(Java Data Objects - JSR243) のような O/R Mapper を EC-CUBE で実現する.

■ サンプルコード(案)

DB に INSERT するのはこんな感じ.


$client = new dtb_client();
$client->name01 = "名前(姓)";
$client->name02 = "名前(名)";

... snip

$pm = new PersistenceManager();
$pm->makePersistent($client);


DB からデータを取得する場合


$pm = new PersistenceManager();
// PK が 1 の dtb_client のデータを取得する
$client = $pm->getObjectById("dtb_client", 1);


複数のレコードを取得する場合は, キーを配列で渡す.
$clients には, dtb_client の連想配列が入る.
同じキーが複数存在した場合は, IN 句の SQL になる.


$pm = new PersistenceManager();
// PK が 1 と 2 の dtb_client のデータを取得する
$clients = $pm->getObjectsById("dtb_client",  
                               array("client_id" =>1, "client_id" => 2));


LIKE 検索は, 連想配列のキーに suffix をつける.
suffix のルールによって, いろいろな検索条件の指定ができそう


$pm = new PersistenceManager();
// email が nanasess を含むものを検索する. %value% のみのサポート
$clients = $pm->getObjectsById("dtb_client", array("email__like" => "nanasess"));


■ 実装(案)

- 各テーブルのメタデータは, Builder パターンを利用して, PersistenceManager に関連するメタデータ用のクラスで実装する
- 各DBの差異も, 上記のメタデータ用クラスで吸収する.
- SELECT とか, INSERT とかの処理は, PersistenceManager クラスが抽象化して行う. PEAR::DB とか, PDO に対するドライバを提供して, 差異を吸収する

■ 長所

- DB を意識しなくてよい
- ソースコードがものすごくシンプルになる
- 慣れればメンテしやすい
- たぶん, EC-CUBE 以外でも使用可能

■ 短所

- もしかしたら車輪の再発明?
- 慣れるまで大変
- SQL をゴリゴリ書けない
- PHP4 で, どこまで実現できるか不明
- PersistenceManager とか, Builder 用のクラスがものすごいことになりそう
- あんまり速くない(たぶん)
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/27 11:05
     Re: EC-CUBE で O/R Mapper 的なもの pineray 2009/10/27 11:42
       Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/27 12:24
     Re: EC-CUBE で O/R Mapper 的なもの seasoft 2009/10/27 12:35
       Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/27 13:03
         Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/27 18:27
         Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/28 0:34
           Re: EC-CUBE で O/R Mapper 的なもの seasoft 2009/10/28 11:19
             Re: EC-CUBE で O/R Mapper 的なもの ghana 2009/10/28 11:26
               Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/28 13:58
             Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/28 13:54
               Re: EC-CUBE で O/R Mapper 的なもの seasoft 2009/10/28 14:49
                 Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/28 15:35
                   Re: EC-CUBE で O/R Mapper 的なもの seasoft 2009/10/28 15:43
                     Re: EC-CUBE で O/R Mapper 的なもの tao_s 2009/10/29 4:11
                       Re: EC-CUBE で O/R Mapper 的なもの pineray 2009/10/29 6:34
                       Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/29 9:09
                         Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/29 9:30
                           Re: EC-CUBE で O/R Mapper 的なもの rhosoi 2009/10/29 10:47
                             Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/29 13:24
                           Re: EC-CUBE で O/R Mapper 的なもの ghana 2009/10/29 10:54
                           Re: EC-CUBE で O/R Mapper 的なもの ghana 2009/10/29 11:14
                             Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/29 13:29
                               Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/11/20 18:33
                                 Re: EC-CUBE で O/R Mapper 的なもの tao_s 2009/11/21 11:06
                                   Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/12/2 15:44
                     Re: EC-CUBE で O/R Mapper 的なもの seasoft 2009/10/29 9:05
           Re: EC-CUBE で O/R Mapper 的なもの kishik 2009/10/28 11:31
             Re: EC-CUBE で O/R Mapper 的なもの nanasess 2009/10/28 14:01

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,971名です
総投稿数は110,019件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.