Объекты ColdFusion (т.е. CFC, вызываемые через cfobject), обычно передаются по ссылке или по значению (скопированы в память)? И можно ли заставить ColdFusion передавать объект в любом случае?
Объекты ColdFusion передаются по ссылке или по значению?
Ответ 1
Объекты ColdFusion передаются по ссылке. Невозможно передать объект по значению, но вы можете создать копию, используя функцию duplicate().
Ответ 2
Хорошо, имейте в виду, что использование duplicate() не работает в MX 7 для копирования определенных вещей, таких как CFC и COM, CORBA, и Java-объекты. Вы можете скопировать CFC в CF 8.
Ответ 3
Сложные объекты, такие как структуры и CFC, передаются по ссылке, но если вы передаете массив в UDF, он передается по значению. Это делает невозможным запись пользовательской функции, которая мутирует массив, как это делают встроенные функции массива. Если вам действительно нужно передать массив по ссылке, вы можете обернуть его в структуру, а затем он будет передан по ссылке.
Ответ 4
FWIW, массивы также передаются по ссылке в движке Railly CFML, как полагают многие разработчики. Ожидается, что Railo 3.1 предложит административную настройку, позволяющую вам выбрать поведение по умолчанию для дополнительной совместимости с Adobe CF.