2012-05-21 26 views
13

वैश्विक स्थिरता को परिभाषित करने का सबसे अच्छा तरीका क्या है i.e PHP में सभी फ़ाइलों में उपलब्ध होना चाहिए।php - ग्लोबल कॉन्स्टेंट (सभी फ़ाइलों में उपलब्ध) को परिभाषित करने का सबसे अच्छा तरीका

धन्यवाद

अद्यतन: स्थिरांक और कक्षा स्थिरांक के बीच मतभेद, क्या हैं वे interchangeably उपयोग किया जा सकता है?

उत्तर

15

अपने शीर्ष .php फ़ाइल में अपना निरंतर परिभाषित करें, जो अन्य सभी स्क्रिप्ट में शामिल किया जाएगा। यह आपका फ्रंट कंट्रोलर, आपकी कॉन्फ़िगरेशन फ़ाइल या इस एकल उद्देश्य के लिए बनाई गई फ़ाइल हो सकती है।

define('MY_CONST', 'hello'); 
+0

पूर्णता के लिए: http://php.net/manual/en/function.define.php – Cypher

6

निम्न करें:

define("CONSTANT_NAME","value"); 

आप अन्य php फाइलों से यह निरंतर का उपयोग करना चाहते हैं, आप इसे शामिल करने की:

include_once("thefilewiththeconstant.php"); 
0

जो भी फ़ाइल आप अपने निरंतर बनाने (एस) में, आपको उन फ़ाइलों में इसकी आवश्यकता/शामिल करना होगा जिन्हें आप उनका उपयोग करेंगे।

अन्यथा आप $ _SESSION वैश्विक का उपयोग कर सकते हैं, लेकिन उन फ़ाइलों में से प्रत्येक कोड में आपके कोड की शुरुआत में session_start() द्वारा सत्र प्रारंभिकता की आवश्यकता होती है।

0

जांच इस

<?php 
//Global scope variables 
$a = 1; 
$b = 2; 

function Sum() 
{ 
global $a, $b; 

$b = $a + $b; 
} 

Sum(); 
echo $b; 
?> 
0

एक बेहतर तरीका है, तो लगातार कुछ भी करने के लिए असाइन किया गया है और अगर यह कुछ भी करने के लिए आवंटित नहीं कर रहा है तो यह आवंटित की जाँच करने, और यह शून्य करने के लिए आवंटित और फिर अपने निरंतर

को असाइन है
defined("FOO") ? null : define("FOO", "BAR"); 
1

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

0

यह निर्भर करता है। आपकी स्थिति में मैं define() के लिए जाऊंगा क्योंकि इसका उपयोग में अधिक कॉम्पैक्ट वाक्यविन्यास है। लेकिन define() केवल PHP < 7.0 में स्केलर मान रख सकता है यदि आपको किसी सहयोगी सरणी की आवश्यकता है तो आपके पास $GLOBALS के लिए जाने के लिए कोई अन्य विकल्प नहीं है या PHP> = 7.0 का उपयोग करें।

// Storing a single value works fine with define 
define('ROOT_DIR', dirname(dirname(__FILE__)) . '/'); 

// But not for complex data types like this array 
$USERPIC_PARAMS = array(
      "user_root"  => "images/users", 
      "padding_length" => 8, 
      "split_length"  => 4, 
      "hash_length"   => 12, 
      "hide_leftover"  => false 
    ); 

// Then you need $GLOBALS 
$GLOBALS['USERPIC_PARAMS'] = $USERPIC_PARAMS; 
// Or in PHP >=7.0 
define('USERPIC_PARAMS', $USERPIC_PARAMS); 

// output your define 
echo ROOT_DIR; 
// output your $GLOBALS var 
echo $GLOBALS['USERPIC_PARAMS']; 
// output in PHP >=7.0 your constant 
echo USERPIC_PARAMS;