2012-01-29 42 views
5

Tôi đang làm việc để tạo CMS tùy chỉnh của riêng mình bằng PHP và tôi có một vài hằng số mà tôi đã xác định. Có một cách dễ dàng để sửa đổi các hằng số? Tôi đã suy nghĩ về việc sử dụng một cái gì đó như fopen() sau đó thay đổi nó, nhưng tôi chưa bao giờ được sử dụng các chức năng hệ thống tập tin.Làm thế nào để thay đổi hằng số PHP?

+11

Bạn có thể muốn truy cập lại định nghĩa từ điển về "hằng số". – BoltClock

+2

hằng số và fopen? –

+3

Tại sao bạn cần phải thay đổi hằng số của mình? Nếu chúng không liên tục thông qua mã của bạn, hãy sử dụng các biến số – Tom

Trả lời

26

Hằng số là số nhận dạng (tên) cho một giá trị đơn giản. Như tên gợi ý, giá trị đó không thể thay đổi trong khi thực hiện tập lệnh (ngoại trừ các hằng số ma thuật, không thực sự là hằng số). Hằng số phân biệt chữ hoa chữ thường theo mặc định. Theo quy ước, hằng số số nhận dạng luôn là chữ hoa.

Tên của hằng số tuân theo các quy tắc giống như bất kỳ nhãn nào trong PHP. A tên hằng số hợp lệ bắt đầu bằng một chữ cái hoặc gạch dưới, theo sau là bất kỳ số chữ cái, số hoặc dấu gạch dưới nào. Là một biểu hiện thường xuyên, nó sẽ được thể hiện thusly: [a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *

từ: http://php.net/manual/en/language.constants.php

+8

không thể nói tốt hơn trang php.net! – Tech4Wilco

0

Theo như tôi biết, một khi được đặt, không thể thay đổi hằng số.

14

No. Họ là hằng số, như trong "constant - đó là vĩnh viễn hoặc không thay đổi" (Wiktionary). Khi chúng được xác định, không có cách nào để thay đổi chúng. Để báo giá The Fine Manual, phần Constants:

giá trị [hằng số] không thể thay đổi trong khi thực thi tập lệnh.

+0

Tôi xin lỗi vì không chính xác ... với các hằng số của tôi chỉ là một giá trị có thể được sử dụng trong suốt toàn bộ trang web mà không cần phải tiếp tục xác định chúng. Tôi nên rõ ràng hơn những gì tôi đã cố gắng đạt được. Tôi đang tạo CMS cho riêng mình và tôi đã tự hỏi làm cách nào để tạo ra một cách để thay đổi các biến hoặc bất kỳ thuật ngữ nào tốt cho chúng sẽ không tự chỉnh sửa tệp/tệp chứa chúng. Tôi xin lỗi. – legobear154

+0

Không cần phải xin lỗi vì không đúng, nó xảy ra với mọi người :) – Piskvor

+0

Ok. Cách tốt nhất để tạo tệp cấu hình là gì? Tôi sẽ thêm một bảng quản trị vào CMS của tôi và tôi muốn các biến có thể chỉnh sửa từ đó. – legobear154

15

Hằng số là hằng số và do đó không thể thay đổi. Nếu bạn muốn thay đổi các hằng số máy chủ chẳng hạn như allow_url_fopen, đó là tính reponsibility của máy chủ, hãy yêu cầu chúng. Nếu bạn muốn thay đổi chúng trong PHP, sử dụng các biến

CẬP NHẬT

Trong trường hợp sự thật là gì Corbin nói và bạn muốn thay đổi chúng trong cài đặt, bạn sẽ muốn làm như sau: 0. Thay đổi giá trị không đổi thành sg. như %%constant1. 1. đọc mã vào một biến. 2. Cho phép người dùng thiết lập các biến. 3. Sử dụng str_replace trên tất cả chúng như str_replace ("%% constant1", $ _ POST ["value1"], $ configfile). 4. Đặt $ configfile như là một nội dung của một tập tin.

UPDATE 2

Đối với CMS của riêng bạn mà thôi, tôi đề nghị như sau: cửa hàng tất cả hằng trong một tập tin, vì vậy bạn sẽ cần phải chỉnh sửa chỉ có một tập tin. Và có lẽ so với giải pháp trước đó có thể làm việc cho một chỉnh sửa dễ dàng hơn, nhưng IDK nếu nó là giá trị thời gian.

6

No. bạn không thể sửa đổi các hằng số

0

Hằng số có nghĩa là giá trị không đổi, vì vậy bạn không thể thay đổi hằng số.Nếu bạn sẽ thay đổi hằng số bạn cần phải sử dụng các biến trong trạng thái của các hằng số:

define('ROOT', '/some/path'); 
echo ROOT; // echo's /some/path 
define('ROOT', '/some/other/path'); // gives an error 
echo ROOT; // gives /some/path (if there were no error 

$root = '/some/path'; 
echo $root; // echo's /some/path 
$root = '/some/other/path'; 
echo $root; // echo's /some/other/path 
0

tôi nghĩ anh ấy có nghĩa là trong trường hợp của một kịch bản cài đặt, nơi ông muốn lưu trữ một biến đầu vào cho một tập tin cấu hình, để được được sử dụng trong CMS của mình, sau khi quá trình cài đặt hoàn tất. Trong trường hợp đó, hes không thay đổi hằng số khi chạy.

hes lẽ có một tập tin như thế này:

define(DB, ''); 
define(USER, ''); 
define(PASS, ''); 
define(HOST, ''); 

Và ông muốn tạo ra một kịch bản mà cư những hằng số với dữ liệu để nó có thể được sử dụng trong CMS.

1
in PHP, but only if you have the runkit extension installed. 

However, I must question why you're even defining a constant if you need to change it. It would no longer be a constant once changed and it's appropriate to use constants in your context if it needs to be changed. You may want to consider making it a global variable if it needs to be accessible in other functions or parts of your code, or write proper code by: 
Passing the data as parameters to a function, then returning the manipulated values (if coding in a procedural fashion). 
Set the value in a class' property, then access the value using $this within your class (if coding in an OO fashion). 
Các vấn đề liên quan