dポイントプレゼントキャンペーン実施中!

動的に生成するHTMLで、共通した処理を別ファイルに記述し、
includeして共通化したいのですが、どうもうまくいきません。
解決方法をご教授いただけないでしょうか。
もしくは該当しそうなサイトを教えていただけないでしょうか。
(includeや、関数化についてなどTipsに強いサイト)

よろしくお願い致します。

問題点=== === === === ===

(1)X.asp内で、"01 Call A()"がエラーとなる
→2重定義ということでしょうか?
(2)X.asp内で、"04 Dim i"が2重定義でエラーとなる
→気持ちでは、Privateな変数のつもりなので、2重定義ではないと。
(3)X.asp内で、プライベート関数を定義することは可能かどうか

現状=== === === === ===

--- ~index.asp~ -----

01 Sub A()
02 Dim i
03 Dim j
04 <!--#include file ="X.asp" -->
05 End Sub
---------------------

--- ~X.asp~ -----
<%
01 Call A()
02
03 Sub A()
04 Dim i
05
06 処理A
07
08 End Sub
%>
---------------------

A 回答 (4件)

このやり方は初めて見ました。

素晴らしい!
関数→中身を別のものとして考えるということで関数ベースで継承や多態性を表現しているのですね!ASPによるオブジェクト指向への挑戦ですね!素晴らしい。

ただ、惜しむらくは関数はクラスではないのでプライベート関数を持つことが出来ないのです。

また、yoshisukeさんの指摘の通りプリコンパイルの段階でインクルードファイルと元のファイルは結合されてしまいます。そういう意味で、Private宣言はありません。

また、Executeを使用して、他ページとして処理すれば、リソースは食いますが擬似的にプライベート関数、変数を作ることができます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

オブジェクト指向は一通り学んだつもりですが、
深く意識して質問しているわけではありません。
というより、ひらめいて質問した程度です。

実際目的としていることは、
index.aspで保持している値を
そのまま(index.aspでは意識せず)別ファイルであるX.aspに渡し、
その中で動的に処理を行いたいのです。

またindex.aspに代わるファイルがいくつか存在するため、
X.asp内の処理が共通化できるのではないかというところです。
ASPはまださわりはじめなのですが、Executeで処理するのが現実的でしょうか。
代替え案などございましたら、ご回答いただければと思います。
よろしくお願いいたします。

お礼日時:2003/04/14 11:31

> パラメータが変更になっても、呼び出す側のファイルと、呼び出される側のファイルとで影響が少なくなると考えました。



これはつまり「呼び出す側」のモジュールと「呼び出される側」のモジュール間結合度が高くなることを言っています。つまり、「呼び出す側」は常に「呼び出される側」のモジュールの中でどんな変数を使ってどういう処理がされているかを意識する必要があるわけです。これって期待する効果「影響が少なくなる」と逆じゃありませんか?

モジュール間結合度を低くして、互いのモジュールの影響を低く押さえたいときには、ASP 3.0以降であればClassが使用できるので、そちらを使うことをお勧めします。
    • good
    • 0

--- ~index.asp~ -----



04 <!--#include file ="X.asp" -->
01 Sub A()
02 Dim i
03 Dim j
01 Call SubA(i,j)
05 End Sub
---------------------

--- ~X.asp~ -----
<%
02
03 Sub SubA(ai, aj)
05
06 処理A
07
08 End Sub
%>
---------------------

これじゃだめな理由がわからないのですが。。。
    • good
    • 0
この回答へのお礼

再びご回答ありがとうございます。

思想での理由というのはないのですが、
関数内でIncludeすることで、
別ファイルの関数パラメータの指定が不要になりますよね。
(実行時にはソースが連結されているため)
パラメータが変更になっても、
呼び出す側のファイルと、呼び出される側のファイルとで
影響が少なくなると考えました。
つまりは変更量を減らすことを一番の目的としていました。
現在は、上記に書かれた様に処理を行っております。

お礼日時:2003/04/14 17:42

実際にロジックがインタープリットされるときは


ソースはこんな感じになっているはずです。

01 Sub A()
02 Dim i
03 Dim j
------インクルードされた「X.asp」---------------
04 Call A()
05
06 Sub A()
07 Dim i
08
09 処理A
10
11 End Sub
-------------------------------
12 End Sub

そのため。。。
「Sub A()」のなかで「Sub A()」が存在してしまいます
ネストされた「Sub A()」の名前を変えてみてはいかが
でしょうか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

関数名は勝手な都合で、そのままで考えたいんです。
個人的な意味合いとしては、
X.aspファイルの中の関数は、Private関数という意味なんですが。
includeは別ファイルを呼び出すのでなく、
ソースを結合するだけなので、
この方法では実現できないということですね。
別の方法を検討します。

お礼日時:2003/04/13 12:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!