バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > 共通クラス内で「フロント機能」 or 「管理機能」の判定

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tao_s
投稿日時: 2009/5/1 1:24
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 799
Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定
ちょっと色々考えてみました。

要件がわからないので正しいやり方かどうかは置いておいて、
/data/class/SC_View.php
のSC_AdminView()がコールされた時に適当な変数をグローバル宣言するか、定数をdefineするのが一番書くコードが少なさそうです。

あとはSC_AdminView()で
$this->_smarty->template_dir = TEMPLATE_ADMIN_DIR;

とされているので、管理画面かどうか調べたいページで
if($this->_smarty->template_dir == TEMPLATE_ADMIN_DIR)

とするのはどうでしょうか?
seasoft
投稿日時: 2009/5/1 1:56
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定
既存の実装では無理で、新規変数などで追加実装する場合、
\html\require.php
\html\mobile\require.php
\html\admin\require.php
でセットしようと考えています。


とりあえずは継続して、既存の実装範囲で判定する方法につきまして情報をお待ちしております。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

tao_s
投稿日時: 2009/5/1 2:26
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 799
Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定
引用:
\html\admin\require.php
でセットしようと考えています。

↑が一番素直ですね
ramrun
投稿日時: 2009/5/1 21:45
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定
私も深く解析したことはないのですが、ソースを追った感じではtao_sさんと同じく手を加えるならSC_ViewのSC_AdminView、SC_SiteView、SC_UserView、SC_InstallView、SC_MobileViewあたりかなと思いました。

ただ私も、やはりtao_sさんが書かれているように「要件がわからない」のですが...
Helperのところでフロントか管理かを必要とするということは、それによって内部の処理を変えるということなんだと思いますが、具体的にHelperでできたら便利というのが思い浮かばずです(汗)。
seasoft
投稿日時: 2009/5/1 21:54
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定
現状での要件は、冒頭に書いたとおりです。

以前に、共通クラス内のエラー制御関係で、欲しいと思ったことがありました。
結局、ページクラスまでステータスをリターンする、ダサいコードで誤魔化しましたけど。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

ramrun
投稿日時: 2009/5/1 22:06
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定
すみません。
引用:
以前に、共通クラス内のエラー制御関係で、欲しいと思ったことがありました。

の具体例ってもらえませんか?

「現状、あるかないかが知りたいだけだ」といわれたらそれまでですが(汗)。
seasoft
投稿日時: 2009/5/1 22:38
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定
> すみません。
> の具体例ってもらえませんか?

SC_Helper_Mail#sfSendOrderMail のメール送信でエラーが生じた場合の対応です。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

ramrun
投稿日時: 2009/5/2 1:24
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定
ありがとうございます。
無理やり答えさせたみたいで申し訳ないです。

この件とは直接関係あるわけではないのですが、よろしければ下記をご覧ください。
※既にご存知でしたら申し訳ありません。

カスタマイズと移行の手引(v2.0)
EC-CUBEのフォーク版

フォーク版の記事のほうに当時の私もズケズケと書いておりますが、2系の形はnanasessさんが作ったもので、そのメインは自動更新の部分と複数カテゴリだったと思います。
1系のページ周りや関数をガッツリとクラス分けしたのもこのときです。

で、カスタマイズと移行手順のほうに書かれていますが
引用:
data/class/helper 以下のクラスは, 内部で他クラスのインスタンスを生成するヘルパークラスです.

という分け方で、当時はとりあえず分けて、動くところまで持っていって、後から見直そう的なムードでした。
※私がそう思っていただけかも知れませんが。

結局のところ今でもそのまんまなのですが、見直すチャンスでもあるのかなぁと。

seasoftさんの考えは現状をなるべくいじらず、簡単に実装することだと思います。
※違っていたらごめんなさい

私が思ったのは、その処理はどこでやるべきかみたいな。
場合によっては「ステータスをリターンするコード」がいいのではないかと。
深く考えているわけではないので本当に申し訳なないです...

なんだか大事を書いちゃってますが、そういう意見を他の人からも聞いてみたいなぁと思っています。
nanasess
投稿日時: 2009/5/2 8:57
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2313
Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定
呼ばれた気がしたので出てきましたw

引用:

seasoftさんは書きました:

以前に、共通クラス内のエラー制御関係で、欲しいと思ったことがありました。
結局、ページクラスまでステータスをリターンする、ダサいコードで誤魔化しましたけど。

snip ...

SC_Helper_Mail#sfSendOrderMail のメール送信でエラーが生じた場合の対応です。


クラスデザインの観点からすると, Helper クラスは, Page クラスで呼ばれるべきです.
本来, Helper クラスから Page クラスを呼んではいけません.
(Page クラスは呼ばないけど, 特定の Page クラスのみ使用するビジネスロジックを記述するのは可)

Helper クラスの中で Page クラスの情報を取得することは, Page クラスのインスタンスに依存した Helper クラスができてしまうのであまりよろしくありません.

ユニットテストも, 非常に書きにくいと思います.

Helper の中身は, できるだけシンプルにし, エラー制御を分岐したい場合はエラー処理用のコールバック関数(or クラス)を用意して, Page クラス側で処理した方が良いです.

実装は大きくなってしまいますが, ステートレスになるのでメンテやテストもしやすくなります.


##
あと, 全くオフトピですが, GW 後半に, やっと EC-CUBE と戯れる時間がとれそうなので, 2.x を作った時から永らく考え中だった, 新しいプラグインの仕組みを作ろうと思っています.

アクセス解析用タグの埋め込みとか, 自作のブロックなどが EC-CUBE 本体が依存することなく作れるようになるはず...
seasoft
投稿日時: 2009/5/2 10:50
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定
ramrun 様

> seasoftさんの考えは現状をなるべくいじらず、簡単に実装することだと思います。

そうですね。根底には記述量を抑えたいという考えはあります。


> 私が思ったのは、その処理はどこでやるべきかみたいな。
> 場合によっては「ステータスをリターンするコード」がいいのではないかと。

例に挙げた SC_Helper_Mail#sfSendOrderMail の場合ですと、メソッド内で生成した SC_SendMail_Ex をリターンしています。そうなると、ストレートにリターンできないので、クラス変数に退避させるといった、対応が必要でした。

本来は、try catch が使えれば、早いと思うんですけどね。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

« 1 (2) 3 4 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,850名です
総投稿数は109,987件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1291
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.