/
Statement.php
113 lines (111 loc) · 3.36 KB
/
Statement.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
/**
* Statement.php
*
* @author Yoshinobu Kinugasa <kinugasa@gree.co.jp>
* @package Cascade_DB
*/
/**
* [抽象クラス] 問い合わせステートメント
*
* データ問い合わせに必要な情報を構築する。<br/>
* 実際のデータ問い合わせはドライバーを介して行う。
*
* @author Yoshinobu Kinugasa <kinugasa@gree.co.jp>
* @package Cascade_DB
*/
abstract class Cascade_DB_Statement
extends Cascade_Object
{
// ----[ Properties ]---------------------------------------------
protected /* Cascade_DB_Criteria */ $criteria = NULL;
protected /* Cascade_DB_DataFormat */ $data_format = NULL;
// ----[ Magic Methods ]------------------------------------------
// {{{ __construct
/**
* コンストラクタ
*
* @param Cascade_DB_Criteria データ抽出条件
*/
public /* void */
function __construct(Cascade_DB_Criteria $criteria)
{
parent::__construct();
if ($criteria->df_name === NULL) {
$ex_msg = 'Not found DataFormat Name in Criteria {criteria} %s';
$ex_msg = sprintf($ex_msg, Cascade_System_Util::export($criteria, TRUE));
throw new Cascade_Exception_DBException($ex_msg);
}
$this->data_format = Cascade::getDataFormat($criteria->df_name);
$this->criteria = $criteria;
}
// }}}
// ----[ Abstraction Methods ]------------------------------------
// {{{ prepare
/**
* 実行に必要な準備をする
*
* ステートメント実行に必要となる準備を行う。
*/
abstract protected /* void */
function prepare(/* void */);
// }}}
// {{{ preform
/**
* ステートメントを実行する
*
* 実行準備が整ったステートメントを実行する。
*/
abstract protected /* void */
function perform(/* void */);
// }}}
// ----[ Methods ]------------------------------------------------
// {{{ getCriteria
/**
* データ抽出条件を取得する
*
* 関連づけられているデータ抽出条件を取得する。
*
* @return Cascade_DB_Criteria データ抽出条件
*/
public final /* Cascade_DB_Criteria */
function getCriteria(/* void */)
{
return $this->criteria;
}
// }}}
// {{{ getDataFormat
/**
* データ・フォーマットを取得する
*
* 関連づけられているデータ・フォーマットを取得する。
*
* @return Cascade_DB_DataFormat データ・フォーマット
*/
public final /* Cascade_DB_DataFormat */
function getDataFormat(/* void */)
{
return $this->data_format;
}
// }}}
// {{{ execute
/**
* ステートメントを実行する
*
* ステートメントを実行して、その実行結果を返す。
*
* @param boolean (optional) TRUE:割り込み処理を無視する
* @return mixed 実行結果
*/
public final /* mixed */
function execute(/* boolean */ $ignore_icptr = FALSE)
{
if ($ignore_icptr === FALSE) {
$invocation = new Cascade_AOP_Invocation($this);
return $invocation->proceed();
}
$this->prepare();
return $this->perform();
}
// }}}
};