Вы можете добавить setter="false"
и getter="false"
для предотвращения получения и установки, но вы не можете напрямую ограничить доступ к свойствам. Лучше всего поместить их в свой конструктор в локальной области видимости компонента.
/**
* email
* @accessors true
*/
component email output="false" hint="This is email object." {
isDevMode = false;
devModeToEmailAddress = "foo@foo.com";
devModeFromEmailAddress = "bar@foo.com";
/* properties */
property name="toEmailAddress" type="string";
property name="fromEmailAddress" type="string";
property name="subject" type="string";
property name="body" type="string";
property name="attachments" type="array";
}
Затем, когда вам нужно их использовать, просто укажите variables.isDevMode
в любой функции, чтобы получить значение. Если вам нужно установить их во время выполнения, вы можете установить их в методе init()
для вашей функции. Я обычно делаю это так:
component email output="false" hint="This is email object." {
instance = {};
/* properties */
property name="toEmailAddress" type="string";
property name="fromEmailAddress" type="string";
property name="subject" type="string";
property name="body" type="string";
property name="attachments" type="array";
public email function(required boolean isDevMode, required string devModeToEmailAddress, required string devModeFromEmailAddress){
variables.Instance.isDevMode = Arguments.isDevMode;
variables.Instance.devModeToEmailAddress = Arguments.devModeToEmailAddress;
variables.Instance.devModeFromEmailAddress = Arguments.devModeFromEmailAddress;
{
}
Затем, в любое время, когда мне нужны эти значения, я просто получаю variables.Instance.isDevMode
. Я также создаю общий метод get()
, который возвращает variables.instance
, чтобы я мог видеть, что там.
public struct function get(){
return Duplicate(variables.Instance);
}
Но поскольку они находятся в области локальных переменных компонентов, их нельзя изменить извне компонента.