2009-07-09 5 views
4

В чем разница между переменной cfproperty tag и переменной scope в ColdFusion?В чем разница между переменной cfproperty и переменной переменной scope в coldfusion?

У меня есть опыт работы на языке Java, можете ли вы сравнить переменную cfproperty ColdFusion, переменную scope variable с переменной экземпляра Java и переменной класса?

благодарите!

ответ

12

CFPROPERTY полезен только для предоставления метаданных для компонента. Единственный раз, когда я их использую, - это создание компонента для веб-службы, когда это необходимо.

Вот TechNote, который обсуждает CFPROPERTY немного дальше: http://kb2.adobe.com/cps/191/tn_19169.html

Область переменных «защищают» и доступны только в пределах компонента. «Это» переменные области видимости являются общедоступными. И, конечно, любая переменная, объявленная с ключевым словом «var», является частной для этого метода.

Вот некоторые более составных областей: http://www.hemtalreja.com/?p=94

+2

В cf9 cfproperty привлекло большое внимание и теперь фактически устанавливает переменные для компонента. Если вы также добавите директиву accessors, вы также получите уловки и сеттеры по умолчанию. – anopres

6

Примечание: cfproperty тег делает NOT определенных переменных.

Однако полезно использовать CFC Explorer (непосредственно для прямого доступа к CFC), чтобы вы могли видеть свойства объекта CFC.

FYI ... cfproperty будет намного полезнее в CF9. См.: ORM - Rethinking ColdFusion Database Integration

+1

Вы также можете использовать метаданные свойств с помощью метода CF8 onMissingMethod, чтобы определить, какие свойства могут быть установлены в компоненте. –

0

cfproperty полезен при использовании пользовательских объектов в удаленных методах. Например, предположим, что я имел следующий компонент:

<cfcomponent displayname="User"> 
    <cfset variables.firstName = "first" /> 
</cfcomponent> 

который я хотел использовать в качестве возврата к удаленному методу потребляется через SOAP. Мне нужно было бы <cfproperty> тегов для каждой переменной, которую я хотел инкапсулировать в возвращаемом объекте, чтобы этот объект был включен в документ WSDL как сложный тип. Следовательно, компонент сверху должен быть:

<cfcomponent displayname="User"> 
    <cfproperty name="firstName" type="string" /> 
    <cfset variables.firstName = "first" /> 
</cfcomponent> 
Смежные вопросы