2012-01-29 12 views
5

मैं PHP में अपना स्वयं का कस्टम सीएमएस बनाने के लिए काम कर रहा हूं और मेरे पास कुछ स्थिरांक हैं जिन्हें मैंने परिभाषित किया है। क्या स्थिरांक को संशोधित करने का कोई आसान तरीका है? मैं fopen() जैसे कुछ का उपयोग करने के बारे में सोच रहा था, फिर इसे बदल रहा था, लेकिन मैंने फाइल सिस्टम कार्यों का कभी भी उपयोग नहीं किया है।PHP स्थिरांक कैसे बदलें?

+11

आप "निरंतर" की शब्दकोश परिभाषा पर फिर से विचार करना चाहेंगे। – BoltClock

+2

स्थिरांक और fopen? –

+3

आपको अपने स्थिरांक बदलने की आवश्यकता क्यों है? यदि वे आपके कोड के माध्यम से निरंतर नहीं हैं, तो चर का उपयोग करें – Tom

उत्तर

26

एक निरंतर एक सरल मूल्य के लिए एक पहचानकर्ता (नाम) है। नाम बताता है कि यह मान स्क्रिप्ट (जादू स्थिरांक को छोड़कर, जो वास्तव में स्थिरांक नहीं हैं) के निष्पादन के दौरान परिवर्तित नहीं हो सकता है। एक निरंतर डिफ़ॉल्ट रूप से केस-संवेदी है। सम्मेलन के अनुसार, निरंतर पहचानकर्ता हमेशा अपरकेस होते हैं।

स्थिरांक का नाम PHP में किसी भी लेबल के समान नियमों का पालन करता है। मान्य निरंतर नाम किसी पत्र या अंडरस्कोर से शुरू होता है, उसके बाद अक्षरों, संख्याओं या अंडरस्कोर की संख्या। एक नियमित रूप से अभिव्यक्ति के रूप में, यह व्यक्त किया जाएगा thusly: [a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *

से: http://php.net/manual/en/language.constants.php

+8

php.net पेज से बेहतर नहीं कह सकता! – Tech4Wilco

0

जहां तक ​​मुझे पता है, एक बार सेट, एक निरंतर बदला नहीं जा सकता है।

14

नहीं। वे स्थिरांक हैं, जैसा कि "constant - जो स्थायी या अचूक है" (विकिपीडिया)। एक बार उन्हें परिभाषित करने के बाद, उन्हें बदलने का कोई तरीका नहीं है। The Fine Manual उद्धरण के लिए, खंड कॉन्स्टेंट्स:

[स्थिरांक] मान स्क्रिप्ट के निष्पादन के दौरान नहीं बदला जा सकता है।

+0

मुझे गलत होने के लिए खेद है ... मेरे लिए स्थिरांक केवल एक मूल्य है जिसका उपयोग पूरे समय किया जा सकता है उन्हें परिभाषित रखने के बिना पूरी साइट। मुझे यह स्पष्ट करना चाहिए था कि मैं क्या हासिल करने की कोशिश कर रहा था। मैं केवल अपने स्वयं के उपयोग के लिए अपना स्वयं का सीएमएस बना रहा हूं और मैं सोच रहा था कि वे चर बदलने के लिए एक तरीका बनाने के बारे में कैसे जा सकते हैं या उनके लिए जो भी अच्छी अवधि हो, वे फाइल/फाइलों को मैन्युअल रूप से संपादित किए बिना होंगे। मुझे क्षमा करें। – legobear154

+0

गलत होने के लिए क्षमा मांगने की कोई आवश्यकता नहीं है, यह हर किसी के साथ होता है :) – Piskvor

+0

ठीक है। कॉन्फ़िगरेशन फ़ाइल बनाने का सबसे अच्छा तरीका क्या होगा? मैं अपने सीएमएस में एक व्यवस्थापक पैनल जोड़ने जा रहा हूं और मैं चाहता हूं कि चर वहां से संपादन योग्य हों। – legobear154

15

स्थिरांक स्थिरांक हैं और इसलिए बदला नहीं जा सकता है। यदि आप server_stl_fopen जैसे सर्वर स्थिरांक को बदलना चाहते हैं, जो मेजबान की प्रतिकृति है, तो उनसे पूछें। आप उन्हें PHP में बदलना चाहते हैं, चर

अद्यतन

मामले में का उपयोग सच्चाई क्या कोर्बिन कहते है और आप उन्हें स्थापना में संशोधित करना चाहते हैं, तो आपको निम्न क्या करना चाहते हैं: 0। एसजी को निरंतर मान बदलें। %%constant1 की तरह। 1. एक चर में कोड पढ़ें। 2. उपयोगकर्ता को चर सेट करने दें। 3. str_replace ("%% निरंतर 1", $ _ POST ["value1"], $ configfile) जैसे str_replace का उपयोग करें। 4. फ़ाइल की सामग्री के रूप में $ configfile रखें।

अद्यतन 2

अपने स्वयं के सीएमएस के लिए केवल, मेरा सुझाव है निम्नलिखित: दुकान एक फ़ाइल में सभी स्थिरांक है, तो आप केवल एक फ़ाइल को संपादित करने की आवश्यकता होगी। और शायद पिछले समाधान की तुलना में एक आसान संपादन के लिए काम कर सकता है, लेकिन आईडीके अगर यह समय के लायक है।

6

नहीं। आप, स्थिरांक

0

स्थिरांक का मतलब मूल्य स्थिर है संशोधित नहीं कर सकते तो आप स्थिरांक नहीं बदल सकते।आप स्थिरांक बदल जाएगा यदि आप स्थिरांक के राज्य में चर का उपयोग करने की आवश्यकता है:

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

मुझे लगता है कि वह एक इंस्टॉलर स्क्रिप्ट, जहां वह एक कॉन्फ़िग फ़ाइल के लिए एक इनपुट चर संग्रहीत करना चाहते हैं के मामले में इसका मतलब है, होना करने के लिए एक बार इंस्टॉलेशन पूरा हो जाने पर, उसके सीएमएस में उपयोग किया जाता है। उस स्थिति में hes रनटाइम पर स्थिर नहीं बदल रहा है।

hes शायद इस तरह की एक फ़ाइल मिल गया:

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

और वह एक स्क्रिप्ट है कि डेटा के साथ इन स्थिरांक पॉप्युलेट तो यह सीएमएस में इस्तेमाल किया जा सकता बनाना चाहता है।

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). 
संबंधित मुद्दे