私は機能書いた:ファンクションとストアドプロシージャに同じ名前を付けることはできませんか?
function getArtists(where='', artistactive = true){
//yadayada
return artists;
}
をし、それを含め、テンプレートでは、後、次の
<cfstoredproc datasource="#request.dsn#" procedure="GetArtists">
<cfprocresult name="GetArtists">
</cfstoredproc>
これはエラーを生成します。
Routines cannot be declared more than once. The routine getArtists has been declared twice in different templates
オクラホマので、質問1:ColdFusionでは、関数とストアドプロシージャは両方とも 'ルーチン'であり、2回宣言できないと考えていますか?
私の次のことは、関数テンプレートの前に、のストアドプロシージャを含めることでした。これは問題ありません。
質問2:何が得られますか?
*はコンパイル時に発生します*はい、およびその理由は、インクルードが* cfstoredprocの後に*呼び出されたときにのみエラーが発生することに関連しています。あなたが言ったように、関数は 'variables'スコープにも格納されていますので、スコープが同じ名前の変数が既に存在することをCFが最初に確認していると推測しています。 – Leigh
php guy、 '変数に格納されている'関数には使用されていません... lib.functionを実行するときに宣言するものは何ですか?あるいはlib.functionのような関数の名前をつけて、それを呼び出すのですか?結果= lib.function(somevar); –
@DougCassidy関数ポインタを保持する変数は、CFMLで多少の機能プログラミングを行うのに非常に便利です。 JavaScriptと同様、ColdFusion CFCやCFMの変数であるグローバルスコープを「汚染」しないように注意する必要があります。 –