È uscita = false per impostazione predefinita per la funzione cfscript in CFC?
-
13-09-2019 - |
Domanda
Ho pensato che i metodi di CFC definiti come funzioni in cfscript sono uscita = false per impostazione predefinita, ma quando apro il CFC in cfcexplorer.cfc (browser direttamente al CFC), si dice in uscita: abilitato.
Bug di cfcexplorer.cfc?
Soluzione
Risposta breve : Non ha importanza.
cfscript
non visualizzerà nulla a meno che non si chiama esplicitamente writeOutput () da esso. Questo include funzioni cfscript
nonché qualsiasi codice cfscript
fuori di una funzione.
Questo è diverso da sintassi CF tag, che, per impostazione predefinita, in uscita almeno gli spazi tra i tag. In cfscript
, qualsiasi testo che si scrive sarà compilato dal motore CFML. nei tag CF, qualsiasi testo che scrivete verrà scritto nel buffer di uscita e inviato al browser.
Risposta lunga : E 'lo stesso che non specificare un attributo di uscita.
blocchi cfscript
non emettono nulla. Eventuali blocchi di tag, a meno che non avvolto in cfsilent
, fanno spazio bianco di uscita se non altro. Sì, anche cffunctions fanno, ma l'output viene scartata se l'attributo di uscita è impostata su false.
L'essenza della risposta di Peter Boughton è corretta. Non è né avvolto in cfsilent
né cfoutput
. L'uscita non è proibito, ma non accade a meno che non lo si fa in modo esplicito.
Si può sempre combinare un cffunction
basato su tag con script per ottenere il meglio dei due mondi. Qualcosa di simile ...
<cffunction name="x" output="false" access="package">
<cfargument name="y" type="string" required="false" default="YY" />
<cfscript>
var someValue = y & "something";
writeOutput("test"); // this will not be written
return someValue;
</cfscript>
</cffunction>
Questo consente di specificare un output e di accesso sul tag cffunction
così come permettono di essere argomenti opzionali (che non si può fare attraverso funzioni cfscript
), quindi riempire il corpo con cfscript, comprese le dichiarazioni var e il ritorno della funzione.
Naturalmente, per questa funzione, se si rimuove l'attributo output
o si cambia in true
, è uscita "test
" prima di tornare.
Altri suggerimenti
funzioni cfscript sono una scimmia strano. Essi sono una specie di entrambi. Non è possibile specificare che sono output = "false", ma sono fino a quando si utilizza un writeOutput (), ma sono riportati da cfcexplorer come output = "true". E 'un problema strano penso che il comitato consultivo CFML sta guardando proprio ora.
Io non sono del tutto certo, ma la mia ipotesi è che funzioni di script sono gli stessi tag cffunction
a questo proposito -. A che il default non è né true
né false
L'impostazione dell'attributo output
per un cffunction
, i seguenti sono il caso:
-
true
è equivalente alla funzione di essere avvolto incfoutput
. -
false
è equivalente alla funzione di essere avvolto incfsilent
. - Lasciando di default (indefinito) è equivalente a codice standard che è avvolto né con
cfoutput
nécfsilent
.
Tuttavia, ho quasi mai usare cfscript
, e questo non può essere effettivamente il caso -. Dovremo aspettare che gli altri a venire avanti e confermare o correggere questo