Henry asks:
Does CF9 script style CFC still needs to set attribute output=false for component and function?
In my - admittedly - very limited testing, the answer appears to be no. I created a component with a large amount of white space in both the function and around it as well:
component {
public string function sayHello() {
return "Hello World!";
}
}
I duplicated this component but added output="false" to both the component and method:
component output="false" {
public string function sayHello() output="false" {
return "Hello World!";
}
}
To test then I created an instance of both and wrapped the sayHello call:
<cfset badWS = new testws()>
<cfset goodWS = new testws2()>
<cfoutput>
Testing bad: -#badWS.sayHello()#-<br/>
Testing good: -#goodWS.sayHello()#-<br/>
</cfoutput>
The result was the exact same. No additional white space from the creation of the CFC or the call either. I even tested making an instance of the first CFC with createObject, just to see if it made a difference, and it did not. Of course, it isn't like the output="false" argument is ignored. If you write a CFC method that outputs directly to the screen, then it does matter. Consider:
public function sayHello2() { writeOutput("hello2!"); }
That function will work just fine, but if you modify it a bit...
public function sayHello2() output="false" { writeOutput("hello2!"); }
Now you have a useless function. The output="false" will suppress the writeOutput>