Разница между cfparam и cfargument в функции холодного слияния?

StackOverflow https://stackoverflow.com/questions/8979097

Вопрос

В чем разница между этими двумя блоками кода, вызываемыми сразу после тега cffunction:

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

<cfargument name="bork_bork_bork" required="false" default="false">
Это было полезно?

Решение

<cfparam>, при использовании с атрибутом по умолчанию, гарантирует существование переменной.Поскольку область действия не указана, bork_bork_bork вводится в Variables объем.

<cfargument> используется для передачи аргументов функции.Эти значения хранятся в Arguments объем.Вы получите доступ к значению, используя arguments.bork_bork_bork.

Обратите внимание, что arguments.bork_bork_bork и bork_bork_bork не одинаковы.Объем arguments находится только внутри функции, другой хранится в Variables область действия и будет действителен в любом месте страницы (хотя я бы не рекомендовал кодировать его таким образом).

Другие советы

cfparam не имеет ничего общего с функциями.Я вижу, что это запутано, учитывая, что параметр / аргумент являются взаимозаменяемыми словами на большинстве языков.Имейте в виду, что пользовательские функции не были добавлены в CF до версии 5, поэтому не было никакого конфликта при использовании CFParam в качестве способа инициализации переменных.Более того, тег CFParam, вероятно, нарисовал свое имя из сейчас устаревшей функции, Parameterexists () (или наоборот - к тому времени, когда я попал в CF, по версии 4.0 (1999), эта функция уже устарела, поэтому я пропустил историю позадиЭто)

CFParam - это способ установить по умолчанию для любой переменной, если переменная уже не существует.Это ярлык, чтобы сделать следующее:

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

Cfargument используется только после открытия тега, чтобы определить аргумент, передаваемый в функцию CFC или пользовательскую функцию.

Из того, что я вспоминаю, между тегом CFFUNCUNT и CFARGument ничто не может существовать, поэтому они должны отображаться сразу после тега Cffpunction.

Изнутри функции вы получите доступ к CFARGument через аргументы Scope {Arguments.bork_bork_bork} или через массив {аргументы 1 }

CFParam просто гарантирует, что переменная доступен по запросу, не должен использоваться вместо CFARGument.Для дальнейшего чтения Проверьте:

cfargument

Использование аргументов Scope в качестве массива

Определение функций, используя тег CFFFunction

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top