2013-04-25 44 views
7

Tôi đang sử dụng ColdFusion 9 và đã kiểm tra tài liệu nhưng không rõ ràng.Hằng số có được hỗ trợ trong ColdFusion không?

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0999c-7ff1.html

(Tôi có nền PHP và tìm kiếm một cái gì đó tương tự như hằng PHP)

Cảm ơn

+0

bit nói _ "ColdFusion không cho phép bạn đặt tên cho hằng số." _ Có nghĩa là bạn không thể tạo các hằng số của riêng bạn (như bạn có thể với hàm định nghĩa của PHP). Tất nhiên bạn có thể sử dụng các biến và hướng dẫn mã hóa phù hợp, như [Miguel mô tả bên dưới] (http://stackoverflow.com/questions/16220215/are-constants-supported-in-coldfusion#16220446). –

Trả lời

19

Không, ColdFusion không có hằng số. Tôi nghĩ rằng trong hầu hết các trường hợp, các nhà phát triển chỉ thiết lập một biến, sử dụng một số quy ước đặt tên như tên biến trong ALL_CAPITALS, và sau đó không bao giờ thay đổi giá trị của nó. Điều này không thực sự là một hằng số như trong các ngôn ngữ khác và bạn thực sự phải cẩn thận rằng giá trị không thay đổi (bởi vì nó không phải là một hằng số thực). Tôi đã làm điều này trước và thường đặt những "hằng số" này trong phạm vi ứng dụng để chúng có sẵn.

Đã có một số enhancement request mở lại một lúc. Tuy nhiên, có vẻ như nó đã bị đóng và hoãn lại.

Adam Cameron blogged about this very thing last year và tham chiếu cùng yêu cầu nâng cao.

10

Không, không phải là tính năng ngôn ngữ gốc. bit chính trong trang bạn đã liên kết là "ColdFusion không cho phép bạn đặt tên cho các hằng số"

Tôi nghĩ trang thực sự đang nói về các chữ cái chứ không phải hằng số.

Nếu bạn muốn hỗ trợ hằng unmodifiable, tôi nghĩ rằng bạn cần phải sử dụng một đối tượng để đóng gói các giá trị:

component displayname="constant values for my app" { 
    property name="mailServer" default="127.0.0.1" getter=true setter=false 
    property name="password" default="supersecret" getter=true setter=false 
} 

Sau đó, bạn có thể thiết lập này trong bất cứ phạm vi bạn cần đến nó (ví dụ như ứng dụng hoặc yêu cầu) sau đó gọi application.constants.getMailServer()

Nó không ngắn gọn như giải pháp @ Miguel-F, là giải pháp tôi sử dụng hầu hết thời gian, nhưng đây là tùy chọn khác.

Các vấn đề liên quan