SOY CMS / SOY Shop

ブログトップ

SOY Shopプラグインの解説 独自のDAOのクラスを持つ

2014年02月15日

今回はプラグイン独自でDAOのクラスを持つプラグインについて見ていきます。

説明で挙げるプラグインは商品レビュープラグイン(プラグインID:item_review)です。




説明に入る前に、プラグインのファイル構造の記事をご覧ください。

SOY Shopプラグインの解説 プラグインの構造


最初に商品レビュープラグインの構造は下記になります。



soyshop.config.php、soyshop.info.phpとsoyshop.plugin.install.phpの拡張ポイントに関する詳細説明は省略します。

SOY Shopプラグインの解説 インストール時の処理

SOY Shopプラグインの解説 詳細画面の作成


このプラグインでは、


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");

SOY App開発の説明 SOY2DAOでデータベースを利用する1