schrieb ich eine Funktion:Funktion und gespeicherte Prozedur können nicht denselben Namen haben?
function getArtists(where='', artistactive = true){
//yadayada
return artists;
}
und enthalten es, in einer Vorlage, nach folgenden
<cfstoredproc datasource="#request.dsn#" procedure="GetArtists">
<cfprocresult name="GetArtists">
</cfstoredproc>
Dies erzeugt einen Fehler:
Routines cannot be declared more than once. The routine getArtists has been declared twice in different templates
Ok, so Frage 1: ColdFusion denkt, dass eine Funktion und eine gespeicherte Prozedur beide "Routinen" sind und nicht zweimal deklariert werden können?
Also, das nächste, was ich tat, war, meine Funktionen Vorlage vor die gespeicherte Prozedur zu integrieren ... und es scheint in Ordnung zu sein, mit dem.
Frage 2: Was gibt?
* tritt während der Kompilierung * Ja, und das im Zusammenhang mit warum der Fehler nur auftritt, wenn das Include * nach * cfstoredproc aufgerufen wird. Wie Sie bereits sagten, werden Funktionen auch im 'variables'-Bereich gespeichert. Daher rate ich, dass CF zuerst diesen Gültigkeitsbereich überprüft - eine Variable mit demselben Namen bereits existiert - und einen Fehler (wenn auch nicht vollständig) auslöst. – Leigh
php guy, nicht daran gewöhnt, dass Funktionen in Variablen gespeichert sind ... gibt es etwas zu deklarieren, wenn lib.function ausgeführt wird? oder nennst du einfach deine Funktionen wie lib.function und nennst sie als solche? result = lib.function (irgendeinvar); –
@DougCassidy Variablen, die Funktionszeiger enthalten, sind sehr praktisch, um ein kleines bisschen funktionaler Programmierung in CFML zu erhalten. Genau wie bei JavaScript müssen Sie darauf achten, den globalen Geltungsbereich, der Variablen für ColdFusion-CFCs und CFMs ist, nicht zu "verschmutzen". –