É a saída = false por padrão para a função cfscript no CFC?
-
13-09-2019 - |
Pergunta
Eu pensei métodos de CFC definidos como funções em cfscript estão de saída = false por padrão, mas quando eu abrir o CFC em cfcexplorer.cfc (navegador diretamente ao CFC), ele diz que saída: habilitado.
Bug do cfcexplorer.cfc?
Solução
Resposta curta ??strong>: Não importa.
cfscript
faz nada não saída a menos que você chamar explicitamente writeOutput () a partir dele. Isso inclui funções em cfscript
bem como qualquer fora código cfscript
de uma função.
Isto é diferente de sintaxe CF etiquetas, que, por padrão, a saída de pelo menos um espaço em branco entre as tags. Em cfscript
, qualquer texto que você escreve será compilado pelo motor CFML. em tags CF, qualquer texto que você escreve será escrito para o buffer de saída e enviado para o navegador.
Resposta longa : É o mesmo que não especificar um atributo de saída.
blocos cfscript
não mostra nada. Quaisquer blocos de tag, a menos que envolto em cfsilent
, fazer espaços em branco saída se nada mais. Sim, até mesmo cffunctions fazer, mas a saída é descartado se o atributo de saída é definida como falsa.
A essência da resposta de Pedro Boughton está correto. Não é nem envolto em cfsilent
nem cfoutput
. Saída não é proibido, mas isso não acontece a menos que você fazê-lo explicitamente.
Você sempre pode combinar um cffunction
de tags com scripts para obter o melhor dos dois mundos. Algo como ...
<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>
Isso permite que você especificar uma saída e acesso na etiqueta cffunction
, bem como permitir argumentos para ser opcional (que você não pode fazer através de funções cfscript
), em seguida, preencher o corpo com cfscript, incluindo declarações var e o retorno de função.
Claro que, para essa função, se você remover o atributo output
ou alterá-lo para true
, ele irá de saída "test
" antes de retornar.
Outras dicas
funções cfscript é um macaco estranho. Eles são uma espécie de ambos. Você não pode especificar que eles são emitidos = "false", mas eles são até que você use um writeOutput (), mas eles são relatados por cfcexplorer como sendo de saída = "true". É um problema estranho eu acho que o Comité Consultivo CFML está olhando agora.
Eu não sou inteiramente certo, mas meu palpite seria que as funções de script são as mesmas marcas cffunction
a este respeito -. Em que o padrão não é nem true
nem false
A definição do atributo output
para uma cffunction
, o seguinte são o caso:
-
true
é equivalente à função de ser envolvido emcfoutput
. -
false
é equivalente à função de ser envolvido emcfsilent
. - Deixando-padrão (indefinido) é equivalente ao código padrão que é enrolado nem com
cfoutput
nemcfsilent
.
No entanto, eu quase nunca uso cfscript
, e isso pode não ser realmente o caso -. Nós vamos ter que esperar pelos outros para vir e confirmar ou corrigir este