Pergunta

Qual é a diferença entre esses dois blocos de código, quando chamados logo após uma tag cffunction:

<cfparam name="bork_bork_bork" default="false">

<cfargument name="bork_bork_bork" required="false" default="false">
Foi útil?

Solução

<cfparam>, quando usado com o atributo padrão, garantirá a existência de uma variável.Como não há escopo especificado, bork_bork_bork está sendo colocado no Variables escopo.

<cfargument> é usado para passar argumentos para uma função.Esses valores são armazenados no Arguments escopo.Você acessaria o valor usando arguments.bork_bork_bork.

Observe que arguments.bork_bork_bork e bork_bork_bork não são os mesmos.O escopo de arguments está apenas dentro da função, o outro está sendo armazenado no Variables escopo e será válido em qualquer lugar da página (embora eu não recomende codificá-lo dessa maneira).

Outras dicas

cfparam não tem nada a ver com funções.Posso ver que isso é confuso, visto que param/argument são palavras intercambiáveis ​​na maioria dos idiomas.Tenha em mente que as funções definidas pelo usuário não foram adicionadas ao CF até a versão 5, portanto não houve conflito no uso do cfparam como forma de inicializar variáveis.Além disso, a tag cfparam provavelmente tirou seu nome da função agora obsoleta, ParameterExists() (ou vice-versa - quando entrei no CF, na versão 4.0 (1999), essa função já estava obsoleta, então perdi a história por trás isto)

cfparam é uma maneira de definir um padrão para qualquer variável se a variável ainda não existir.É um atalho para fazer o seguinte:

<cfif NOT isDefined('bork_bork_bork')>
    <cfset bork_bork_bork = 'myDefaultSetting'>
</cfif>

cfargument só pode ser usado após uma tag de abertura para definir um argumento sendo passado para uma função CFC ou uma função definida pelo usuário.

Pelo que me lembro, nada pode existir entre a tag cffunction e a tag cfargument, então elas devem aparecer logo após a tag cffunction.

De dentro da função você acessará cfargument através do escopo de argumentos {arguments.bork_bork_bork} ou através de um array {arguments1}

cfparam apenas garantirá que a variável esteja disponível na solicitação e não deve ser usada em vez de cfargument.Para ler mais confira:

argumento

Usando o escopo Arguments como uma matriz

Definindo funções usando a tag cffunction

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top