teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

22

追記

2018/03/27 17:26

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -44,7 +44,10 @@
44
44
  ------
45
45
  実際XMLでSQLを外出しにするのはかなり前からありますし、その時のことを少し思い出したので追記。
46
46
  xmlなので不等号(< や >)などのSQL文中にそのまま記述できないエスケープ文字がありましたね、そういえば。
47
+ ※CDATAについて指摘があったので、追記。何れにせよエスケープ文字はあります。
48
+ > CDATAセクションは、 <や&をエスケープしなくてよい場所ですが、 ]]>という文字列が含まれる場合には ]]&gt;のようにエスケープする必要があります。
47
49
 
50
+
48
51
  じゃ、iniファイルではどうかというと、
49
52
  phpだと、[parse_ini_file()](http://php.net/manual/ja/function.parse-ini-file.php)で取得できるみたいですけど、多次元の配列で返却となってます。
50
53
  この場合、改行の扱いがどうなるかですけど、ちょっとわかりませんでした。

21

修正

2018/03/27 17:26

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -49,6 +49,6 @@
49
49
  phpだと、[parse_ini_file()](http://php.net/manual/ja/function.parse-ini-file.php)で取得できるみたいですけど、多次元の配列で返却となってます。
50
50
  この場合、改行の扱いがどうなるかですけど、ちょっとわかりませんでした。
51
51
 
52
- ことで、やはりプレーンテキストで、セクションなどの決めを持たせて、読み込み後に、[preg_split()](http://php.net/manual/ja/function.preg-split.php)で分割して処理するなどとした方が、自由に加工出来て良いのではないでしょうか。
52
+ 何れにせよフォーマットがあるなら、エスケープ文字は付きまとうでしょうから結局のところ、プレーンテキストで、セクションなどの決めを持たせて、読み込み後に、[preg_split()](http://php.net/manual/ja/function.preg-split.php)で分割して処理するなどとした方が、自由に加工出来て良いのではないでしょうか。
53
53
  java系だと「2way-SQL方式」などという事で、外出し用のライブラリがあるので、PHPにも同様な物があるのかもしれませんが。
54
54
  ※もう古いですが([S2Dao.PHP5](http://s2dao.php5.seasar.org/))

20

追記

2018/03/24 18:38

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -50,4 +50,5 @@
50
50
  この場合、改行の扱いがどうなるかですけど、ちょっとわかりませんでした。
51
51
 
52
52
  ということで、やはりプレーンテキストで、セクションなどの決めを持たせて、読み込み後に、[preg_split()](http://php.net/manual/ja/function.preg-split.php)で分割して処理するなどとした方が、自由に加工出来て良いのではないでしょうか。
53
- java系だと「2way-SQL方式」などという事で、外出し用のライブラリがあるので、PHPにも同様な物があるのかもしれませんが。
53
+ java系だと「2way-SQL方式」などという事で、外出し用のライブラリがあるので、PHPにも同様な物があるのかもしれませんが。
54
+ ※もう古いですが([S2Dao.PHP5](http://s2dao.php5.seasar.org/))

19

追記

2018/03/24 18:31

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -49,4 +49,5 @@
49
49
  phpだと、[parse_ini_file()](http://php.net/manual/ja/function.parse-ini-file.php)で取得できるみたいですけど、多次元の配列で返却となってます。
50
50
  この場合、改行の扱いがどうなるかですけど、ちょっとわかりませんでした。
51
51
 
52
- ということで、やはりプレーンテキストで、セクションなどの決めを持たせて、読み込み後に、[preg_split()](http://php.net/manual/ja/function.preg-split.php)で分割して処理するなどとした方が、自由に加工出来て良いのではないでしょうか。
52
+ ということで、やはりプレーンテキストで、セクションなどの決めを持たせて、読み込み後に、[preg_split()](http://php.net/manual/ja/function.preg-split.php)で分割して処理するなどとした方が、自由に加工出来て良いのではないでしょうか。
53
+ java系だと「2way-SQL方式」などという事で、外出し用のライブラリがあるので、PHPにも同様な物があるのかもしれませんが。

18

修正

2018/03/24 18:23

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -43,7 +43,7 @@
43
43
 
44
44
  ------
45
45
  実際XMLでSQLを外出しにするのはかなり前からありますし、その時のことを少し思い出したので追記。
46
- xmlなので不等号(< や >)などのSQL文中にそのまま記述できない文字というのがありましたね、そういえば。
46
+ xmlなので不等号(< や >)などのSQL文中にそのまま記述できないエスケープ文字がありましたね、そういえば。
47
47
 
48
48
  じゃ、iniファイルではどうかというと、
49
49
  phpだと、[parse_ini_file()](http://php.net/manual/ja/function.parse-ini-file.php)で取得できるみたいですけど、多次元の配列で返却となってます。

17

推敲

2018/03/24 18:10

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -49,4 +49,4 @@
49
49
  phpだと、[parse_ini_file()](http://php.net/manual/ja/function.parse-ini-file.php)で取得できるみたいですけど、多次元の配列で返却となってます。
50
50
  この場合、改行の扱いがどうなるかですけど、ちょっとわかりませんでした。
51
51
 
52
- ということで、やはりプレーンテキストで、セクションなどの決めを持たせて、読み込み後に、[str_getcsv()](http://www.php.net/manual/ja/function.str-getcsv.php)で分割して処理するなどとした方が、自由に加工出来て良いのではないでしょうか。
52
+ ということで、やはりプレーンテキストで、セクションなどの決めを持たせて、読み込み後に、[preg_split()](http://php.net/manual/ja/function.preg-split.php)で分割して処理するなどとした方が、自由に加工出来て良いのではないでしょうか。

16

推敲

2018/03/24 18:03

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -42,7 +42,7 @@
42
42
  逆にどういった点を使いにくいと思われたのでしょう?
43
43
 
44
44
  ------
45
- 実際XMLでSQLを外しにするのはかなり前からありますし、その時のことを少し思い出したので追記。
45
+ 実際XMLでSQLを外しにするのはかなり前からありますし、その時のことを少し思い出したので追記。
46
46
  xmlなので不等号(< や >)などのSQL文中にそのまま記述できない文字というのがありましたね、そういえば。
47
47
 
48
48
  じゃ、iniファイルではどうかというと、

15

追記

2018/03/24 17:59

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -39,4 +39,14 @@
39
39
 
40
40
  > XMLやJSONを見ましたが、SQL文を外だしするという用途には、少し使いにくいような気がします。
41
41
 
42
- 逆にどういった点を使いにくいと思われたのでしょう?
42
+ 逆にどういった点を使いにくいと思われたのでしょう?
43
+
44
+ ------
45
+ 実際XMLでSQLを外だしにするのはかなり前からありますし、その時のことを少し思い出したので追記。
46
+ xmlなので不等号(< や >)などのSQL文中にそのまま記述できない文字というのがありましたね、そういえば。
47
+
48
+ じゃ、iniファイルではどうかというと、
49
+ phpだと、[parse_ini_file()](http://php.net/manual/ja/function.parse-ini-file.php)で取得できるみたいですけど、多次元の配列で返却となってます。
50
+ この場合、改行の扱いがどうなるかですけど、ちょっとわかりませんでした。
51
+
52
+ ということで、やはりプレーンテキストで、セクションなどの決めを持たせて、読み込み後に、[str_getcsv()](http://www.php.net/manual/ja/function.str-getcsv.php)で分割して処理するなどとした方が、自由に加工出来て良いのではないでしょうか。

14

推敲

2018/03/24 17:59

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -35,7 +35,7 @@
35
35
  上記からするとXMLじゃないでしょうか。
36
36
  1.SQL文中には使用するDBMSのコメントが書けるし、XMLでのコメントも書ける。
37
37
  2.XMLのタグで囲まれた部分を、一つの文字列として取り出せば良いので改行を使用しても問題ない。
38
- 4.PHPから読み出すのにどの道必要ですから、タグとして識別子を設定
38
+ 4.読み出すのにどの道必要ですから、タグとして識別子を設定
39
39
 
40
40
  > XMLやJSONを見ましたが、SQL文を外だしするという用途には、少し使いにくいような気がします。
41
41
 

13

追記

2018/03/24 17:34

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -35,4 +35,8 @@
35
35
  上記からするとXMLじゃないでしょうか。
36
36
  1.SQL文中には使用するDBMSのコメントが書けるし、XMLでのコメントも書ける。
37
37
  2.XMLのタグで囲まれた部分を、一つの文字列として取り出せば良いので改行を使用しても問題ない。
38
- 4.PHPから読み出すのにどの道必要ですから、タグとして識別子を設定
38
+ 4.PHPから読み出すのにどの道必要ですから、タグとして識別子を設定
39
+
40
+ > XMLやJSONを見ましたが、SQL文を外だしするという用途には、少し使いにくいような気がします。
41
+
42
+ 逆にどういった点を使いにくいと思われたのでしょう?

12

追記

2018/03/24 17:27

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -21,4 +21,18 @@
21
21
 
22
22
  モデルが複数のソースファイルで構成されると、ドキュメント無しでは読めなくなってしまうという人が殆どって事なのでしょうから、後の人の事も考えてその構成のルール等はきちんと決めて文書化しておかなければいけませんね。
23
23
 
24
- 責められるのは、「なんでこんな構成にした」よりも先に「なんで構成管理ができていないのか」だと思いますので。
24
+ 責められるのは、「なんでこんな構成にした」よりも先に「なんで構成管理ができていないのか」だと思いますので。
25
+
26
+ 追記2
27
+ --
28
+ 質問の追記を見落としてましたので追記。
29
+
30
+ > 1(コメントを書ける)
31
+ > 2(join・サブクエリなどを利用すると長くなるので改行したい)
32
+ > 4(コメントと合わせて理解しやすいように重複しないユニークなエイリアスを付けたい。
33
+ > および、iniファイルのようなname=value型の構造をイメージしていた)
34
+
35
+ 上記からするとXMLじゃないでしょうか。
36
+ 1.SQL文中には使用するDBMSのコメントが書けるし、XMLでのコメントも書ける。
37
+ 2.XMLのタグで囲まれた部分を、一つの文字列として取り出せば良いので改行を使用しても問題ない。
38
+ 4.PHPから読み出すのにどの道必要ですから、タグとして識別子を設定

11

追記

2018/03/24 17:24

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,10 +1,11 @@
1
1
  > 「SQL文を外だしするのに利用できるフォーマットはどのようなものがあるか」
2
2
 
3
- そのファイル自体のメンテナンスとプログラムから読み込むということで、テキストファイルでいのじゃないでしょうか。
3
+ そのファイル自体のメンテナンスとプログラムから読み込むということで、プレーンテキストでいのじゃないでしょうか。
4
4
  一般的なテキストエディタならSQLでのキーワードなどの強調文字などに対応していますし、文字コードの変更もしやすいですから。
5
5
 
6
6
  [PHP内からの.sqlファイルの読み込みphp](https://code.i-harness.com/ja/q/2416d)
7
- PHPには詳しくありませんが、バインド変数を含めた形のSQLでも多分実行できると思います。
7
+ PHPには詳しくありませんが、プレースホルダを含めた形のSQLでも多分実行できると思います。
8
+ ※同然プレースフォルダの値設定の処理は必要です。まあ、そこらへんは質問者さんは分かっておられると思いますけど。
8
9
  但し、他の言語との互換性は低くなるでしょうが。
9
10
 
10
11
  追記
@@ -12,6 +13,8 @@
12
13
  質問者さんの参考にされたページのリンクに以下があります。
13
14
  [SQLの共通を図ってはならない](http://isol.pro-s.co.jp/news/2008/11/26/sql-file2/)
14
15
  この持ち方だと、修正などでの影響範囲を少なくする事ができますね。
16
+ 類似処理を一つのファイルに纏めるなどの拡張性を考えるとタグで管理できる、
17
+ XMLの方が良いかもしれませんね。
15
18
 
16
19
  私も分離した方が可読性は良くなるなどのメリットはあると思っています。
17
20
  デメリットの方が大きいとするのは、関係が不明瞭になる、ってことですかね。

10

修正

2018/03/24 17:11

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -16,6 +16,6 @@
16
16
  私も分離した方が可読性は良くなるなどのメリットはあると思っています。
17
17
  デメリットの方が大きいとするのは、関係が不明瞭になる、ってことですかね。
18
18
 
19
- モデルが複数のソースファイルで構成されると、ドキュメント無しでは読めなくなってしまうという人が殆どって事なのでしょうから、後の人の事も考えてその構成のルールはきちんと決めて文書化しておかなければいけませんね。
19
+ モデルが複数のソースファイルで構成されると、ドキュメント無しでは読めなくなってしまうという人が殆どって事なのでしょうから、後の人の事も考えてその構成のルールはきちんと決めて文書化しておかなければいけませんね。
20
20
 
21
21
  責められるのは、「なんでこんな構成にした」よりも先に「なんで構成管理ができていないのか」だと思いますので。

9

修正

2018/03/24 16:05

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -16,4 +16,6 @@
16
16
  私も分離した方が可読性は良くなるなどのメリットはあると思っています。
17
17
  デメリットの方が大きいとするのは、関係が不明瞭になる、ってことですかね。
18
18
 
19
- モデルが複数のソースファイルで構成されると、ドキュメント無しでは読めなくなってしまうという人が殆どって事なのでしょうから、後の人の事も考えてその構成のルールはきちんと決めて文書化しておかなければいけませんね。
19
+ モデルが複数のソースファイルで構成されると、ドキュメント無しでは読めなくなってしまうという人が殆どって事なのでしょうから、後の人の事も考えてその構成のルールはきちんと決めて文書化しておかなければいけませんね。
20
+
21
+ 責められるのは、「なんでこんな構成にした」よりも先に「なんで構成管理ができていないのか」だと思いますので。

8

推敲

2018/03/24 16:04

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -14,6 +14,6 @@
14
14
  この持ち方だと、修正などでの影響範囲を少なくする事ができますね。
15
15
 
16
16
  私も分離した方が可読性は良くなるなどのメリットはあると思っています。
17
- デメリットの方が大きいとするのは、人は忘れものだからってことですかね。
17
+ デメリットの方が大きいとするのは、関係が不明瞭になってことですかね。
18
18
 
19
19
  モデルが複数のソースファイルで構成されると、ドキュメント無しでは読めなくなってしまうという人が殆どって事なのでしょうから、後の人の事も考えてその構成のルールはきちんと決めて文書化しておかなければいけませんね。

7

修正

2018/03/24 15:57

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -16,4 +16,4 @@
16
16
  私も分離した方が可読性は良くなるなどのメリットはあると思っています。
17
17
  デメリットの方が大きいとするのは、人は忘れるものだからって、ことですかね。
18
18
 
19
- モデルの構成要素が複数のソースファイルで構成されると、ドキュメント無しでは読めなくなってしまうという人が殆どって事なのでしょうから、後の人の事も考えてその構成のルールはきちんと決めて文書化しておかなければいけませんね。
19
+ モデルが複数のソースファイルで構成されると、ドキュメント無しでは読めなくなってしまうという人が殆どって事なのでしょうから、後の人の事も考えてその構成のルールはきちんと決めて文書化しておかなければいけませんね。

6

追記

2018/03/24 15:56

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -11,4 +11,9 @@
11
11
  --
12
12
  質問者さんの参考にされたページのリンクに以下があります。
13
13
  [SQLの共通を図ってはならない](http://isol.pro-s.co.jp/news/2008/11/26/sql-file2/)
14
- この持ち方だと、修正などでの影響範囲を少なくする事ができますね。
14
+ この持ち方だと、修正などでの影響範囲を少なくする事ができますね。
15
+
16
+ 私も分離した方が可読性は良くなるなどのメリットはあると思っています。
17
+ デメリットの方が大きいとするのは、人は忘れるものだからって、ことですかね。
18
+
19
+ モデルの構成要素が複数のソースファイルで構成されると、ドキュメント無しでは読めなくなってしまうという人が殆どって事なのでしょうから、後の人の事も考えてその構成のルールはきちんと決めて文書化しておかなければいけませんね。

5

推敲

2018/03/24 15:54

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -11,4 +11,4 @@
11
11
  --
12
12
  質問者さんの参考にされたページのリンクに以下があります。
13
13
  [SQLの共通を図ってはならない](http://isol.pro-s.co.jp/news/2008/11/26/sql-file2/)
14
- この持ち方だと、修正などの影響範囲を少なくする事ができますね。
14
+ この持ち方だと、修正などの影響範囲を少なくする事ができますね。

4

推敲

2018/03/24 15:33

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -11,4 +11,4 @@
11
11
  --
12
12
  質問者さんの参考にされたページのリンクに以下があります。
13
13
  [SQLの共通を図ってはならない](http://isol.pro-s.co.jp/news/2008/11/26/sql-file2/)
14
- この持ち方だと、SQL外だしにも出来、使用していソースとも1:1に出来そうですね。
14
+ この持ち方だと、修正などの影響範囲少なくす事がきますね。

3

追記

2018/03/24 15:32

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -11,4 +11,4 @@
11
11
  --
12
12
  質問者さんの参考にされたページのリンクに以下があります。
13
13
  [SQLの共通を図ってはならない](http://isol.pro-s.co.jp/news/2008/11/26/sql-file2/)
14
- この持ち方だと、SQLを外だしにも出来、使用しているソースとも1:1に出来そうですね。
14
+ この持ち方だと、SQLを外だしにも出来、使用しているソースとも1:1に出来そうですね。

2

追記

2018/03/24 15:26

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -5,4 +5,10 @@
5
5
 
6
6
  [PHP内からの.sqlファイルの読み込みphp](https://code.i-harness.com/ja/q/2416d)
7
7
  PHPには詳しくありませんが、バインド変数を含めた形のSQLでも多分実行できると思います。
8
- 但し、他の言語との互換性は低くなるでしょうが。
8
+ 但し、他の言語との互換性は低くなるでしょうが。
9
+
10
+ 追記
11
+ --
12
+ 質問者さんの参考にされたページのリンクに以下があります。
13
+ [SQLの共通を図ってはならない](http://isol.pro-s.co.jp/news/2008/11/26/sql-file2/)
14
+ この持ち方だと、SQLを外だしにも出来、使用しているソースとも1:1にも出来そうですね。

1

追記

2018/03/24 15:23

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,7 +1,8 @@
1
1
  > 「SQL文を外だしするのに利用できるフォーマットはどのようなものがあるか」
2
2
 
3
3
  そのファイル自体のメンテナンスとプログラムから読み込むということで、テキストファイルでいいのじゃないでしょうか。
4
+ 一般的なテキストエディタならSQLでのキーワードなどの強調文字などに対応していますし、文字コードの変更もしやすいですから。
5
+
4
6
  [PHP内からの.sqlファイルの読み込みphp](https://code.i-harness.com/ja/q/2416d)
5
-
6
7
  PHPには詳しくありませんが、バインド変数を含めた形のSQLでも多分実行できると思います。
7
8
  但し、他の言語との互換性は低くなるでしょうが。