MVCとしてのMのコードはどこに?  【解決済み】

質問全般・改善要望
Yoshikazu
メンバー
メンバー
記事: 20
登録日時: 2012年5月31日(木) 15:33

MVCとしてのMのコードはどこに?

投稿記事by Yoshikazu » 2013年1月21日(月) 07:47

-----
ご利用のサーバ:ConetOS5
MODXのバージョン:revo 2.2.6
PHPのバージョン:5.3
MySQLのバージョン:5.0.95
ブラウザ:iE9,firefox
-----
稚拙な質問で申し訳ないのですが、CMSとしてのMODXを理解しようとしているのですが、MVCとしてみた場合、Mの部分(はっきりとしたmodelコード)はどこに書くのでしょうか?。
ZendFrameworkを例に取ると、MVCの各コードは置かれるフォルダもはっきりしているのですが、MODXを見た場合、Mのコードをどこに置くのか判りません。
スニペット等でphpのコードを書いて、それらでDBからデータを取る事は出来るのですが、これがMの部分に当たるのでしょうか?。どなたか教示頂けないでしょうか?。
アバター
yama
管理人
記事: 3125
登録日時: 2009年7月29日(水) 02:50

Re: MVCとしてのMのコードはどこに?

投稿記事by yama » 2013年1月21日(月) 08:03

http://rtfm.modx.com/display/revolution ... Revolution
このへんの情報が参考になるかもです
アバター
enogu
メンバー
メンバー
記事: 32
登録日時: 2009年9月02日(水) 23:56

Re: MVCとしてのMのコードはどこに?

投稿記事by enogu » 2013年1月22日(火) 09:11

手短に説明するならxPDOクラスのsetPackage/addPackageメソッドでコアに読み込まれるディレクトリがモデルの置き場所となります。modXクラスはxPDOを継承しているので、modx.class.phpを見ると自分自身でsetPackageを呼び出しているところを見ることができます。

この挙動からもわかるとおり、コアのモデルが配置されているディレクトリとコンポーネントのそれは個別になっています。コアの場合はcore/model/modx/の下に置かれており、コンポーネントの場合はcore/components/[コンポーネント名]/model/などに存在する場合が多いのではないかと思います。

先にも触れたとおり、MODXにおけるモデルはパッケージと呼ばれる単位でxPDOというORマッピングフレームワークで管理されます。

パッケージは大きくスキーマ宣言(XML)、オブジェクトクラス、そのDBMSごとの実装とマップという四つの要素で成り立っており、ディレクトリ内に無関係なファイルを置いてもスキーマに掲載されていなければ干渉しません。実際MODXのコアモデルのディレクトリにはプロセッサなどxPDOが関知しないファイルも含まれています。

参考までにxPDOにおけるモデルコードの作り方などが説明されているマニュアルはこちらです。
http://rtfm.modx.com/display/xPDO20/Cre ... +With+xPDO
Yoshikazu
メンバー
メンバー
記事: 20
登録日時: 2012年5月31日(木) 15:33

Re: MVCとしてのMのコードはどこに?  【解決済み】

投稿記事by Yoshikazu » 2013年1月22日(火) 17:29

yama様,enogu様 有り難うございます。
両氏より紹介して頂きましたdocument-pageを読んで理解しようと思います。
ざっと読んだ感想ですが、MODXのMの部分は英文でも有り、ここら辺がアマチュアユーザーに高い壁に成っているような気がします。ボチボチ読んでいく事にしました。
今、やろうとしている事に、どうしてもDBとのやりとりが必要なので出来ればきれいなコードを書きたかったものですから伺ったのですが、、、、。
フレームワークは作成者の思惑が有るのでそれぞれですね。
アバター
enogu
メンバー
メンバー
記事: 32
登録日時: 2009年9月02日(水) 23:56

Re: MVCとしてのMのコードはどこに?

投稿記事by enogu » 2013年1月22日(火) 19:00

手前味噌ですが、Confluenceの記事のいくつかは邦訳してあります。内容はMODx Revolution 2.1が出た前後くらいのものなので消滅した記事もありますが…
https://sites.google.com/site/msdnunofficial/