CFScript - CFScript

CFScript est une extension de CFML sur la plate-forme ColdFusion. CFScript ressemble à JavaScript . Certains développeurs ColdFusion le préfèrent car il a moins de surcharge visuelle et typographique que le CFML ordinaire.

Usage

Il est recommandé d'écrire les composants ColdFusion et toute la logique métier en CFScript et d'utiliser CFML uniquement dans les fichiers .cfm parmi HTML .

Sauf s'il s'agit d'un composant ColdFusion purement basé sur un script, tout le code CFScript doit être contenu dans une paire de balises CFScript comme suit:

<cfscript>
    xParam = 115;
    yParam = 200;
    color = 'FFCC99';
</cfscript>

Un exemple simple de fonction :

<cfscript>
function Sum(a, b) {
    var sum = a + b;
    return sum;
}
</cfscript>

Un exemple simple de composant en CFScript, contenant deux fonctions:

component {
    public void function foo() {
        WriteOutput("Method foo() called<br/>");
    }

    public function getString() {
        var x = "hello";
        return x;
    }
}

ColdFusion 11, Railo 4.1+ et Lucee 4.5+ font tous deux de leur mieux pour prendre pleinement en charge les balises cf dans CFScript. Bien qu'il n'y ait pas de substitutions directes pour toutes les balises, il est souvent toujours possible d'obtenir les résultats d'une balise dans un script, mais via une syntaxe différente. Par exemple, voici comment obtenir une requête dans une variable dans CFSCRIPT sans écrire un UDF :

<cfscript>
    qGetData = new Query();
    qGetData .setDataSource('#APPLICATION.datasource#');
    qGetData .setSQL('SELECT column1, column2 FROM table WHERE 1');
    qDateResult = qGetData .Execute().getResult();
</cfscript>

Syntaxe

Depuis ColdFusion 8, CFScript prend en charge les abréviations de syntaxe communes à de nombreux autres langages de programmation, tels que "++", "<=" et "+ =".

Opérateurs arithmétiques

Opérateur La description
+ - * / Arithmétique de base: addition, soustraction, multiplication et division.

En division, l'opérande de droite ne peut pas être nul.

++ - Incrémenter et décrémenter. Augmentez ou diminuez la variable de un.

Ces opérateurs peuvent être utilisés pour la pré-incrémentation ou la décrémentation (comme dans x = ++ i), où la variable est modifiée avant d'être utilisée dans l'expression. Ils peuvent également être utilisés pour la post-incrémentation ou la décrémentation (comme dans x = i ++), où la valeur est modifiée après avoir été utilisée dans l'expression. Si la valeur de la variable i est initialement 7, par exemple, la valeur de x dans x = ++ i est 8 après l'évaluation de l'expression, mais dans x = i ++, la valeur de x est 7. Dans les deux cas, la valeur de je devient 8.

Ces opérateurs ne peuvent pas être utilisés avec des expressions qui impliquent des fonctions, comme dans f (). A ++. Vous pouvez également utiliser une expression telle que - ++ x, mais --- x et +++ x provoquent des erreurs, car leurs significations sont ambiguës. Vous pouvez cependant utiliser des parenthèses pour regrouper les opérateurs, comme dans - (- x) ou + (++ x), cependant.

+ = - = * = / =% = Opérateurs d'affectation composés. La variable de droite est utilisée à la fois comme élément de l'expression et comme variable de résultat. Ainsi, l'expression a + = b équivaut à a = a + b.

Une expression ne peut avoir qu'un seul opérateur d'affectation composé.

+ - Arithmétique unaire: définit le signe d'un nombre.
MOD ou% Module: renvoie le reste après la division d'un nombre par un diviseur. Le résultat a le même signe que le diviseur. La valeur à droite de l'opérateur doit être un entier; l'utilisation d'une valeur non numérique provoque une erreur et si vous spécifiez un nombre réel, ColdFusion ignore la partie fractionnaire (par exemple, 11 MOD 4.7 vaut 3).
\ Division entière: divisez un entier par un autre entier. Le résultat est également un entier; par exemple, 9 \ 4 vaut 2. L'opérande de droite ne peut pas être zéro
^ Exponentiation: renvoie le résultat d'un nombre élevé à une puissance (exposant). Utilisez le caractère curseur (^) pour séparer le nombre du pouvoir; par exemple, 2 ^ 3 vaut 8. Les nombres réels et négatifs sont autorisés pour la base et l'exposant. Cependant, toute expression qui équivaut à un nombre imaginaire, tel que -1 ^ .5 génère la chaîne "-1. # IND. ColdFusion ne prend pas en charge les nombres imaginaires ou complexes.

commentaires

CFScript a deux formes de commentaires: une seule ligne et multiligne.

// This is a single-line comment.
// This is a second single-line comment.
/* This is a multiline comment.
   You do not need to start each line with a comment indicator.
   This line is the last line in the comment. */

Essayer / attraper

try {
    throw(message="Oops", detail="xyz");
} catch (any e) {
    WriteOutput("Error: " & e.message);
    rethrow;
} finally {
    WriteOutput("I run even if no error");
}

Instruction Switch

switch (car) {
    case "Nissan":
         WriteOutput("I own a Nissan");
         break;
    case "Toyota":
         WriteOutput("I own a Toyota");
         break;
    default:
         WriteOutput("I'm exotic");
}

Boucle

Pour la boucle

for (i=1; i LTE ArrayLen(array); i=i+1) {
    WriteOutput(array[i]);
}

Boucle FOR IN

struct = StructNew();
struct.one = "1";
struct.two = "2";
for (key in struct) {
    WriteOutput(key);
}
//OUTPUTS onetwo

Alors que la boucle

x = 0;
while (x LT 5) {
    x = x + 1;
    WriteOutput(x);
}
// Outputs: 12345

Boucle Do / While

x = 0;
do {
    x = x+1;
    WriteOutput(x);
} while (x LTE 0);
// Outputs: 1

Boucle sur un tableau

for (item in array) {
    doSomething(item);
}

Différences avec JavaScript

Bien que CFScript et JavaScript soient similaires, ils présentent plusieurs différences clés. La liste suivante identifie les fonctionnalités CFScript qui diffèrent de JavaScript:

  • CFScript utilise l' expression ColdFusion , qui n'est pas un sur-ensemble ou un sous-ensemble d'expressions JavaScript. En particulier, les expressions ColdFusion ne prennent pas en charge les opérateurs au niveau du bit , et l' opérateur ColdFusion MOD ou% fonctionne différemment de l'opérateur JavaScript% correspondant: dans ColdFusion, l'opérateur effectue une arithmétique entière et ignore les parties fractionnaires. Les expressions ColdFusion prennent également en charge les opérateurs EQV, IMP, CONTAINS et DOES NOT CONTAIN qui ne sont pas pris en charge dans JavaScript.
  • Les déclarations de variables (mot-clé var) ne sont utilisées que dans les fonctions et les threads définis par l'utilisateur.
  • CFScript n'est pas sensible à la casse.
  • Toutes les instructions se terminent par un point-virgule et les sauts de ligne dans le code sont ignorés.
  • Les affectations sont des instructions, pas des expressions, et ne peuvent donc pas être utilisées dans des situations nécessitant l'évaluation de l'opération d'affectation.
  • Les objets JavaScript, tels que windowet document, ne sont pas disponibles.
  • Seul le serveur ColdFusion traite CFScript. Il n'y a pas de CFScript côté client.

Les références

Liens externes