2013-06-03 12 views
5

Czy jest wymagana output="false" dla wszystkich metod cfc zapisanych w CFML? lub byłoby w porządku tak długo, jak zewnętrzna funkcja najbardziej dzwoniącego ma output="false"?jest wyjście = false potrzebne dla wszystkich metod cfc napisane w CFML?

Co zrobić, jeśli nie dodamy output="false" dla żadnej metody CFC, ale upewniamy się, że najwyżej numer osoby dzwoniącej znajduje się w bloku <cfsilent>? czy to jest ok?

Czy output="false" służy wyłącznie do tłumienia białych znaków? Pamiętam lata temu, że CFer powiedział, że mając output="false" pomaga w zapobieganiu wyciekom pamięci: mitowi czy faktowi?

Odpowiedz

4

Niestety, w Adobe ColdFusion, output="false" na poziomie komponentu nie ma wpływu na poszczególne funkcje, tylko na obszar konstruktora. To może nie mieć znaczenia, ponieważ nie mogę wymyślić sposobu na wyprowadzenie czegokolwiek od konstruktora, a nawet zmiana na output="true" wydaje się nie mieć znaczenia.

Mam teraz (dzięki tobie, Henry) eksperymentować z funkcjami łańcuchowymi z output="false", a twoje podejrzenia są słuszne - funkcja wywołująca z output="false" będzie tłumić wyjście z dowolnej funkcji, którą wywołuje. Było to w programie Adobe ColdFusion 9.0.1.

Dodanie cfsilent wokół inicjalizacji komponentu spowoduje wyciszenie wyjścia z komponentu bez wartości output="false", ale znowu nie sądzę, że to nic nie da. Odwołanie funkcji wywoła wyciszenie dowolnego wyjścia z dowolnego wywoływanego połączenia.

output="false" służy wyłącznie do tłumienia białych znaków. Można argumentować, że dodanie białych znaków do bufora wyjściowego zwiększyłoby zużycie pamięci na żądanie, ale tak naprawdę nie nazwałbym tego przeciekiem - być może, jeśli masz dziesiątki tysięcy wywołań komponentów/funkcji, może to powodować problemy.

Output="true" ma inny efekt, traktując funkcję tak, jakby zawierał znaczniki <cfoutput> i automatycznie oceniał dowolne dynamiczne rzeczy #.

+1

W pewien sposób wprowadzająca w błąd implementacja atrybutu, moim zdaniem. Zamiast tego powinien zostać użyty 'whitespace = 'false'' ... a domyślny przypadek to' output =' false''. – Manaus

Powiązane problemy