SOY Shopプラグインの解説 独自のDAOのクラスを持つ
今回はプラグイン独自でDAOのクラスを持つプラグインについて見ていきます。
説明で挙げるプラグインは商品レビュープラグイン(プラグインID:item_review)です。
説明に入る前に、プラグインのファイル構造の記事をご覧ください。
最初に商品レビュープラグインの構造は下記になります。
soyshop.config.php、soyshop.info.phpとsoyshop.plugin.install.phpの拡張ポイントに関する詳細説明は省略します。
このプラグインでは、
init_sqlite.sql
create table soyshop_item_review( id integer primary key AUTOINCREMENT, item_id integer not null, user_id integer, nickname varchar, title varchar, content varchar, image varchar, movie varchar, evaluation integer, approval integer, vote integer, attributes varchar, is_approved integer not null, create_date integer not null, update_date integer );
プラグイン独自のテーブルを持ち、
それに対応したDAOクラスのファイルを持っています。
DAOに関しては下記の記事をご覧ください。
SOY App開発の説明 SOY2DAOでデータベースを利用する1
プラグイン独自に持つDAOクラスのファイルは、
/soyshop/webapp/src/module/plugins/{プラグインID}/domain/以下に配置しています。
商品レビュープラグインでは
/soyshop/webapp/src/module/plugins/item_review/domain/SOYShop_ItemReview.class.php
/soyshop/webapp/src/module/plugins/item_review/domain/SOYShop_ItemReviewDAO.class.php
本来のSOY ShopのDAOファイルは
/soyshop/webapp/conf/common.conf.phpで
SOY2DAOConfig::DaoDir(SOYSHOP_WEBAPP . "src/domain/");
と設定され、
/soyshop/webapp/src/domain/配置することになっています。
/soyshop/webapp/src/domain/shop/SOYShop_ItemDAO.class.phpを呼び出す時には、
domainディレクトリ以下をドット区切りで
$dao = SOY2DAOFactory::create("shop.SOYShop_ItemDAO");
記述して使いますが、
プラグイン独自のDAOクラスの場合はこのように使えないので、
呼び出すためには一旦DAOクラスをインポートしておく必要があります。
/item_review/logic/ItemReviewLogic.class.phpを例に、
SOY2::imports("module.plugins.item_review.domain.*"); $dao = SOY2DAOFactory::create("SOYShop_ItemReviewDAO");
とdomain以下のクラスファイルをすべてインクルードしてから、
create関数で呼び出します。
(SOY2::importsは指定したディレクトリ以下のクラスファイルをすべてインクルードします)
この時、すでにクラスファイルをインクルードしているので、
create関数では、DAOのクラスのみに記述で読み込まれます。
/item_review/logic/以下のロジッククラスを読み込む時は、
SOY2Logic::createInstanceで、src以下をドット区切りで指定したら使えます。
$logic = SOY2Logic::createInstance("module.plugins.item_review.logic.ItemReviewLogic");