Определение переменных в cfscript ColdFusion? - PullRequest
0 голосов
/ 26 июня 2018

Я попытался переписать мои Application.cfc и другие .cfc файлы в моей системе с cfscript. Есть несколько вещей, которые я не уверен, как они работают в cfscript. Я задаюсь вопросом об определении переменных внутри функций. Например, функция onRequestStart() выглядит следующим образом:

function onRequestStart(required string thePage) returntype="boolean" output="false" {
        var request.appCode = "MyApp";
        var request.appName = "Single Page Application";
        var page = listLast(arguments.thePage,"/");
        var onApplicationStart();

        if(!listFindNoCase("Home.cfm,Auth.cfc",page)){
            if(structKeyExists(SESSION, "loggedin") AND SESSION.loggedin EQ false){
                location(url="https://www.myapp.org", addToken="false");
            }
        }

        return true;
    }

Нужно ли использовать слово var в ситуациях, когда я определяю request/session переменные? Если я делаю то, что лучше, используйте var word или local.variablename? local и variables одинаковы в cfscript?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

var равно не равно тегу <cfset>, т. Е. Вы не можете выполнять простой поиск и замену при переключении на синтаксис CFScript.

var используется только для определения локальной переменной. Это означает, что настройка элементов структуры и массива, таких как request, session и другие переменные области видимости, не должна начинаться с префикса var. Кроме того, вызовы функций должны быть записаны без предшествующих var.

local и var оба относятся к локальной области. Обратите внимание, что, как упоминалось выше, если вы хотите определить переменные с помощью local.something, ключевое слово var также не требуется.

variables, в отличие от local, относится к области страниц, доступной из любого места внутри компонента и любых включенных страниц.

Для получения дополнительной информации о различных областях вы должны прочитать документы Adobe .

0 голосов
/ 26 июня 2018

var используется только для локальных переменных. Это означает, что переменные, которые / не должны быть доступны вне определения функции. Session & Request доступны для каждого сеанса и запроса соответственно. Помещение их в область действия var даст ужасные результаты.

Вы можете использовать либо var, либо local, оба имеют локальную область видимости. Variables - это область страницы, и любая переменная, определенная в области Variables, будет доступна для всех функций в CFC.

function onRequestStart(required string thePage) returntype="boolean" output="false" {
    request.appCode = "MyApp";
    request.appName = "Single Page Application";
    var page = listLast(arguments.thePage,"/");
  //this is a function call and not variable declaration.   
  onApplicationStart();

    if(!listFindNoCase("Home.cfm,Auth.cfc",page)){
        if(structKeyExists(SESSION, "loggedin") AND SESSION.loggedin EQ false){
            location(url="https://www.myapp.org", addToken="false");
        }
    }

    return true;
}   
...