PHP
स्थिरांक
खोज…
वाक्य - विन्यास
- परिभाषित (स्ट्रिंग $ नाम, मिश्रित $ मूल्य [, बूल $ case_insensitive = false])
- const CONSTANT_NAME = VALUE;
टिप्पणियों
कॉन्स्टेंट का उपयोग उन मूल्यों को संग्रहीत करने के लिए किया जाता है जिन्हें बाद में बदलना नहीं चाहिए। उनका उपयोग अक्सर कॉन्फ़िगरेशन मापदंडों को संग्रहीत करने के लिए भी किया जाता है, विशेष रूप से वे जो पर्यावरण (देव / उत्पादन) को परिभाषित करते हैं।
कॉन्स्टेंट में वेरिएबल्स जैसे प्रकार होते हैं, लेकिन सभी प्रकार का उपयोग किसी निरंतर को शुरू करने के लिए नहीं किया जा सकता है। वस्तुओं और संसाधनों को स्थिरांक के लिए मान के रूप में उपयोग नहीं किया जा सकता है। PHP 5.6 से शुरू होने वाले कंटेंट के रूप में ऐरे का उपयोग किया जा सकता है
कुछ निरंतर नाम PHP द्वारा आरक्षित हैं। इनमें true
, false
, null
और साथ ही कई मॉड्यूल-विशिष्ट स्थिरांक शामिल हैं।
कॉन्स्टेंट को आमतौर पर अपरकेस अक्षरों का नाम दिया जाता है।
निरंतर परिभाषित किया गया है तो जाँच
साधारण जाँच
यह परिभाषित करने के लिए कि क्या defined
फ़ंक्शन का उपयोग करें। ध्यान दें कि यह फ़ंक्शन निरंतर मान के बारे में परवाह नहीं करता है, यह केवल परवाह करता है कि क्या निरंतर मौजूद है या नहीं। भले ही स्थिरांक का मान null
या false
, फिर भी फ़ंक्शन true
वापस आएगा।
<?php
define("GOOD", false);
if (defined("GOOD")) {
print "GOOD is defined" ; // prints "GOOD is defined"
if (GOOD) {
print "GOOD is true" ; // does not print anything, since GOOD is false
}
}
if (!defined("AWESOME")) {
define("AWESOME", true); // awesome was not defined. Now we have defined it
}
ध्यान दें कि आपके द्वारा परिभाषित लाइन के बाद ही निरंतर आपके कोड में "दृश्यमान" हो जाता है:
<?php
if (defined("GOOD")) {
print "GOOD is defined"; // doesn't print anyhting, GOOD is not defined yet.
}
define("GOOD", false);
if (defined("GOOD")) {
print "GOOD is defined"; // prints "GOOD is defined"
}
सभी परिभाषित स्थिरांक प्राप्त करना
PHP द्वारा बनाए गए सहित सभी परिभाषित स्थिरांक प्राप्त करने के लिए get_defined_constants
फ़ंक्शन का उपयोग करें:
<?php
$constants = get_defined_constants();
var_dump($constants); // pretty large list
केवल उन स्थिरांक को प्राप्त करने के लिए जिन्हें आपके ऐप द्वारा परिभाषित किया गया था, फ़ंक्शन को शुरुआत में और आपकी स्क्रिप्ट के अंत में कहते हैं (आमतौर पर बूटस्ट्रैप प्रक्रिया के बाद):
<?php
$constants = get_defined_constants();
define("HELLO", "hello");
define("WORLD", "world");
$new_constants = get_defined_constants();
$myconstants = array_diff_assoc($new_constants, $constants);
var_export($myconstants);
/*
Output:
array (
'HELLO' => 'hello',
'WORLD' => 'world',
)
*/
यह डिबगिंग के लिए कभी-कभी उपयोगी होता है
स्थिरांक को परिभाषित करना
स्थिरांक का उपयोग कर बनाई गई हैं const
बयान या define
कार्य करते हैं। यह सम्मेलन निरंतर नामों के लिए UPPERCASE अक्षरों का उपयोग करना है।
स्पष्ट मूल्यों का उपयोग करके निरंतर परिभाषित करें
const PI = 3.14; // float
define("EARTH_IS_FLAT", false); // boolean
const "UNKNOWN" = null; // null
define("APP_ENV", "dev"); // string
const MAX_SESSION_TIME = 60 * 60; // integer, using (scalar) expressions is ok
const APP_LANGUAGES = ["de", "en"]; // arrays
define("BETTER_APP_LANGUAGES", ["lu", "de"]); // arrays
दूसरे स्थिरांक का उपयोग करके निरंतर परिभाषित करें
यदि आपके पास एक स्थिरांक है, तो आप उसके आधार पर एक दूसरे को परिभाषित कर सकते हैं:
const TAU = PI * 2;
define("EARTH_IS_ROUND", !EARTH_IS_FLAT);
define("MORE_UNKNOWN", UNKNOWN);
define("APP_ENV_UPPERCASE", strtoupper(APP_ENV)); // string manipulation is ok too
// the above example (a function call) does not work with const:
// const TIME = time(); # fails with a fatal error! Not a constant scalar expression
define("MAX_SESSION_TIME_IN_MINUTES", MAX_SESSION_TIME / 60);
const APP_FUTURE_LANGUAGES = [-1 => "es"] + APP_LANGUAGES; // array manipulations
define("APP_BETTER_FUTURE_LANGUAGES", array_merge(["fr"], APP_BETTER_LANGUAGES));
आरक्षित स्थिरांक
कुछ निरंतर नाम PHP द्वारा आरक्षित हैं और इसे फिर से परिभाषित नहीं किया जा सकता है। ये सभी उदाहरण विफल होंगे:
define("true", false); // internal constant
define("false", true); // internal constant
define("CURLOPT_AUTOREFERER", "something"); // will fail if curl extension is loaded
और एक नोटिस जारी किया जाएगा:
Constant ... already defined in ...
सशर्त परिभाषित करता है
यदि आपके पास कई फाइलें हैं, जहां आप एक ही चर को परिभाषित कर सकते हैं (उदाहरण के लिए, आपका मुख्य कॉन्फ़िगरेशन तब आपका स्थानीय कॉन्फ़िगरेशन) तो वाक्यविन्यास के बाद संघर्ष से बचने में मदद मिल सकती है:
defined("PI") || define("PI", 3.1415); // "define PI if it's not yet defined"
const
बनाम define
define
एक क्रम अभिव्यक्ति जबकि const
एक संकलन समय एक।
इस प्रकार define
गतिशील मूल्यों (यानी फ़ंक्शन कॉल, चर आदि) और यहां तक कि गतिशील नाम और सशर्त परिभाषा के लिए अनुमति देता है। हालांकि यह हमेशा रूट नेमस्पेस के सापेक्ष परिभाषित होता है।
const
स्थिर है (जैसा कि केवल अन्य स्थिरांक, स्केलर्स या सरणियों के साथ संचालन की अनुमति देता है, और केवल उनका एक प्रतिबंधित सेट है, तथाकथित निरंतर स्केलर अभिव्यक्तियाँ , अर्थात अंकगणितीय, तार्किक और तुलनात्मक ऑपरेटर के साथ-साथ सरणी डीफ्रेंसेसिंग), लेकिन स्वचालित रूप से नाम स्थान है। वर्तमान में सक्रिय नामस्थान के साथ उपसर्ग।
const
केवल अन्य स्थिरांक और स्केलरों को मूल्यों के रूप में समर्थन करता है, और कोई संचालन नहीं करता है।
क्लास कांस्टेंट
const
कीवर्ड का उपयोग करके वर्गों के अंदर स्थिरांक को परिभाषित किया जा सकता है।
class Foo {
const BAR_TYPE = "bar";
// reference from inside the class using self::
public function myMethod() {
return self::BAR_TYPE;
}
}
// reference from outside the class using <ClassName>::
echo Foo::BAR_TYPE;
यह प्रकार की वस्तुओं को संग्रहीत करने के लिए उपयोगी है।
<?php
class Logger {
const LEVEL_INFO = 1;
const LEVEL_WARNING = 2;
const LEVEL_ERROR = 3;
// we can even assign the constant as a default value
public function log($message, $level = self::LEVEL_INFO) {
echo "Message level " . $level . ": " . $message;
}
}
$logger = new Logger();
$logger->log("Info"); // Using default value
$logger->log("Warning", $logger::LEVEL_WARNING); // Using var
$logger->log("Error", Logger::LEVEL_ERROR); // using class
लगातार सरणियाँ
Arrays का उपयोग सादे स्थिरांक और वर्ग स्थिरांक के रूप में PHP 5.6 संस्करण से किया जा सकता है:
कक्षा निरंतर उदाहरण
class Answer {
const C = [2,4];
}
print Answer::C[1] . Answer::C[0]; // 42
सादा निरंतर उदाहरण
const ANSWER = [2,4];
print ANSWER[1] . ANSWER[0]; // 42
संस्करण PHP 7.0 से भी यह कार्यक्षमता सादे स्थिरांक के लिए define
फ़ंक्शन में रखी गई थी।
define('VALUES', [2, 3]);
define('MY_ARRAY', [
1,
VALUES,
]);
print MY_ARRAY[1][1]; // 3
स्थिरांक का उपयोग करना
स्थिरांक का उपयोग करने के लिए बस इसके नाम का उपयोग करें:
if (EARTH_IS_FLAT) {
print "Earth is flat";
}
print APP_ENV_UPPERCASE;
या यदि आपको अग्रिम में स्थिरांक का नाम नहीं पता है, तो constant
फ़ंक्शन का उपयोग करें:
// this code is equivalent to the above code
$const1 = "EARTH_IS_FLAT";
$const2 = "APP_ENV_UPPERCASE";
if (constant($const1)) {
print "Earth is flat";
}
print constant($const2);