Question

Supposons que je souhaite appeler une fonction statique à partir d'un CFC à partir d'un bloc cfscript.Autant que je sache, la seule méthode utilise createObject() qui renvoie une référence à l'objet CFC.

Est-ce une bonne pratique ?Je pense que je me souviens avoir lu que cfinvoke instanciait définitivement les objets intelligemment et n'instancierait pas plusieurs fois un CFC statique.Est-ce vrai, et si oui, est-ce toujours vrai lors de l'utilisation de createObject() ?

Était-ce utile?

La solution

CFOBJET

CFOBJECT instancie un composant et crée une variable pour celui-ci.

<cfobject type="component" name="path.to.my.CFC" name="myCFC" />

CFINVOKE

CFINVOKE peut alors référencer la variable créée par CFOBJECT, afin de ne pas avoir à recréer l'objet.

<cfinvoke component="#myCFC#" method="foo" returnVariable="myValue" />

Vous pouvez donc appeler autant de CFINVOKE que vous le souhaitez sur #myCFC# sans recréer l'objet.

Cependant, CFINVOKE peut également créer implicitement l'objet pour vous si vous n'utilisez pas également CFOBJECT.

<cfinvoke component="path.to.my.CFC" method="foo" returnVariable="myValue" />

Appeler plusieurs fonctions de cette manière recréera l'objet à chaque fois.

CRÉER UN OBJET

createObject() fonctionne à peu près de la même manière.Soit créez d'abord l'objet avec une variable de référence

<cfscript>
myCFC = createObject("component", "path.to.my.CFC");
myValue = myCFC.foo();
otherValue = myCFC.bar();
</cfscript>

ou créez l'objet à chaque appel de fonction.

<cfscript>
myValue = createObject("component", "path.to.my.CFC").foo();
otherValue = createObject("component", "path.to.my.CFC").bar();
</cfscript>

je préfère createObject() depuis que j'utilise CFSCRIPT autant que possible.Et je crée toujours l'objet en premier si je veux en appeler plusieurs fonctions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top