バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

その他

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
nanasess
投稿日時: 2009/5/8 22:47
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2314
Re: 共通クラス内での「フロント機能」 or 「管理機能」判定
レス遅くなりまして, 大変申し訳ないです.

コンパイル待ち状態だったので, ざくっと書いてみました.
大変申し訳ございませんが, 現在動作させる環境が無いので, このままでは動かないかもしれません...
後日ちゃんとテストしますので, イメージだけでもお伝えできたらと思います.

僕的には, PHP の error_handler も try/catch も使いにくくて嫌いなので, 結果セットや, エラーの内容を保持するクラスを作ってみました.

できるだけ, 既存の処理に影響無く, 必要な関数のみに処理を加えることができるはず...


<?php

/**
 * 結果を返すための共通クラス.
 */
class LC_Results {

      /** エラーが存在するかどうか */
      var $has_error = false;

      var $errors = array();
      var $results = array();
   
      /**
       * エラーを追加する.
       *
       * エラーを追加した際, $this->has_error は true に設定され,
       * errorListener() 関数でエラーが処理された後, $this->errors
       * に格納される.
       *
       * @param mixed $error エラーの内容
       * @return void
       */
      function addError($error) {
          $this->has_error = true;
          $this->errorListener($error);
	  $this->errors[] = $error;
      }

      /**
       * 正常結果を追加する.
       *
       * @param mixed $result 正常に処理された場合の結果
       * @return void
       */
      function addResult($result) {
          $this->results[] = $result;
      }

      /**
       * 固有のエラー処理をするためのリスナー.
       *
       * @param mixed $error エラーの内容
       * @return void
       */
      function errorListener(&$error) {
      }
}

class Helper_Mail {

  /**
   * @param LC_Results $result 結果クラス
   */
  function sendOrder(&$result = "") {
    $objMail = new Send_Mail_Ex;
    
    $objMail->sendMail($result);
  }
}

class Send_Mail {
  
    function sendMail(&$result) {
        // some logic...
        if ($logic_is_error) {
            $result->addError($error);
        } else {
            $result->addResult($result);
        }
    }
}

class Send_Mail_Result extends LC_Results {

    function errorListener(&$error) {
         $error = "is sendMail Error!";
    }
}

class LC_Page_Hoge extends LC_Page {

    function process() {
        $c = new Helper_Mail;
        $result = new Send_Mail_Result_Hoge();
        $c->sendOrder($result);
        if ($result->has_error) {
            foreach($result->errors as $error) {
                echo $error;
            }
        } else {
           foreach($result->results as $result) {
               echo $result;
           }
        }
    }
}

/**
 * Page クラス固有のエラー処理
 */
class Send_Mail_Result_Hoge extends Send_Mail_Result {

    function errorListener(&$error) {
         $error = "is sendMail Hoge Error!";
    }
}
?>


まず, 結果を保持するための基底クラスである LC_Results クラスを用意し, その中で正常な結果やエラー結果を保持するようにします.
また, エラーの内容をカスタマイズするための Listener 関数を用意しておきます.

各 Helper クラスや, 各 Page クラスで固有のエラー処理をしたい場合は, LC_Results を継承したインナークラスを作って, errorListener() 関数をオーバーライドさせてやれば OK です.

はずしていたりして, 使えなかったらゴメンナサイ...
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
   共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/4/30 13:15
     Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 kishik 2009/4/30 14:27
       Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/4/30 15:01
         Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 kishik 2009/4/30 15:24
           Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/4/30 15:36
             Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 tao_s 2009/4/30 23:19
               Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/4/30 23:22
                 Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/4/30 23:27
                 Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 tao_s 2009/4/30 23:32
                   Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/4/30 23:43
                     Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 tao_s 2009/5/1 1:24
                       Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/5/1 1:56
                         Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 tao_s 2009/5/1 2:26
                           Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 ramrun 2009/5/1 21:45
                             Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/5/1 21:54
                               Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 ramrun 2009/5/1 22:06
                                 Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/5/1 22:38
                                   Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 ramrun 2009/5/2 1:24
                                     Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 nanasess 2009/5/2 8:57
                                       Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/5/2 11:08
                                         Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 nanasess 2009/5/2 12:51
                                           Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/5/2 15:47
                                             Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 ramrun 2009/5/4 1:09
                                               Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/5/6 12:09
                                                 Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 ramrun 2009/5/7 0:54
                                                   Re: 共通クラス内での「フロント機能」 or 「管理機能」判定 seasoft 2009/5/7 20:08
                                                   » Re: 共通クラス内での「フロント機能」 or 「管理機能」判定 nanasess 2009/5/8 22:47
                                                       Re: 共通クラス内での「フロント機能」 or 「管理機能」判定 ramrun 2009/5/9 9:35
                                                         Re: 共通クラス内での「フロント機能」 or 「管理機能」判定 nanasess 2009/5/9 10:02
                                                           Re: 共通クラス内での「フロント機能」 or 「管理機能」判定 seasoft 2009/5/9 10:54
                                                             Re: 共通クラス内での「フロント機能」 or 「管理機能」判定 ramrun 2009/5/9 14:05
                                     Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/5/2 10:50
                                 Re: 共通クラス内で「フロント機能」 or 「管理機能」の判定 seasoft 2009/9/7 19:27

 



ログイン


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

統計情報

総メンバー数は88,972名です
総投稿数は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.