define() बनाम const PHP में: 2024 में क्या चुनें (+कोड)

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

define() बनाम const PHP में: उदाहरणों के साथ विस्तृत गाइड

\n\n

हर PHP डेवलपर को देर-सबेर इस सवाल का सामना करना पड़ता है: कॉन्स्टेंट घोषित करने का सबसे अच्छा तरीका क्या है — define() के साथ या const कीवर्ड के साथ? पहली नज़र में, लगभग कोई अंतर नहीं है। दोनों विकल्प एक अपरिवर्तनीय मान बनाते हैं। लेकिन शैतान, हमेशा की तरह, विवरण में छिपा है।

\n\n

यह लेख मैनुअल का एक उबाऊ अंश नहीं है। हम वास्तविक मामलों पर चर्चा करेंगे जहाँ एक दृष्टिकोण जीतता है और दूसरा विफल होता है। आप सीखेंगे कि PHP 7 और PHP 8 में कॉन्स्टेंट को सही तरीके से कैसे घोषित करें, और अधिक स्वच्छ और पूर्वानुमानित कोड लिखने में सक्षम होंगे।

\n\n

तैयार हैं? चलिए शुरू करते हैं!

\n\n

PHP में कॉन्स्टेंट क्या है?

\n\n

तुलना करने से पहले, आइए मूल बातें याद करें। कॉन्स्टेंट एक सरल मान के लिए एक पहचानकर्ता (नाम) है। इसकी मुख्य विशेषता: स्क्रिप्ट निष्पादन के दौरान इसका मान बदला या हटाया नहीं जा सकता।

\n\n

कॉन्स्टेंट सेटिंग्स, फ़ाइल पथ, API कुंजियाँ और अन्य स्थिर डेटा संग्रहीत करने के लिए सुविधाजनक हैं।

\n\n
<?php\n// define() के माध्यम से कॉन्स्टेंट परिभाषित करना\ndefine('SITE_NAME', 'PythonLib');\n\n// const के माध्यम से कॉन्स्टेंट परिभाषित करना\nconst SITE_URL = 'https://pythonlib.ru';\n\necho SITE_NAME; // PythonLib\necho SITE_URL;  // https://pythonlib.ru\n?>
\n\n

दोनों तरीके काम करते हैं। लेकिन आइए गहराई से जानें।

\n\n

define() और const के मुख्य अंतर

\n\n

1. परिभाषा का समय

\n\n

यह सबसे महत्वपूर्ण बिंदु है। const एक भाषा निर्माण है जो संकलन चरण (स्क्रिप्ट निष्पादन से पहले) पर संसाधित होता है। define() एक फ़ंक्शन है जो रनटाइम (स्क्रिप्ट निष्पादन के दौरान) पर निष्पादित होता है।

\n\n

व्यवहार में इसका क्या अर्थ है?

\n\n
    \n
  • const का उपयोग केवल स्क्रिप्ट के शीर्ष स्तर पर या क्लास के अंदर कॉन्स्टेंट घोषित करने के लिए किया जा सकता है। आप const को for लूप, if शर्त, या फ़ंक्शन के अंदर नहीं रख सकते।
  • \n
  • define() को कहीं भी कॉल किया जा सकता है: लूप, शर्त, फ़ंक्शन के अंदर। यह लचीलापन प्रदान करता है।
  • \n
\n\n
<?php\n// यह काम करेगा\nif (true) {\n    define('DB_HOST', 'localhost');\n}\n\n// लेकिन यह घातक त्रुटि उत्पन्न करेगा\nif (true) {\n    // const DB_HOST = 'localhost'; // त्रुटि!\n}\n\n// लेकिन const का उपयोग क्लास में किया जा सकता है\nclass Config {\n    const DB_NAME = 'test';\n}\n?>
\n\n

निष्कर्ष: यदि आपको गतिशील रूप से कॉन्स्टेंट परिभाषित करने की आवश्यकता है (उदाहरण के लिए, किसी शर्त या फ़ंक्शन के अंदर), तो define() चुनें।

\n\n

2. डेटा प्रकार

\n\n

PHP 7 और 8 में, define() const की तुलना में अधिक डेटा प्रकारों का समर्थन करता है।

\n\n
    \n
  • const केवल स्केलर मान (int, float, string, bool, null) और ऐरे (PHP 5.6 से) स्वीकार कर सकता है।
  • \n
  • define() PHP 7 से ऐरे का भी समर्थन करता है, और PHP 8 में ऑब्जेक्ट का भी (लेकिन यह एक दुर्लभ मामला है)।
  • \n
\n\n
<?php\n// const ऐरे संग्रहीत कर सकता है (PHP 5.6 से)\nconst FRUITS = ['apple', 'banana', 'cherry'];\n\n// define() भी कर सकता है (PHP 7 से)\ndefine('VEGETABLES', ['carrot', 'potato']);\n\n// लेकिन ऑब्जेक्ट केवल define() के माध्यम से (PHP 8+)\n// const OBJECT = new stdClass(); // त्रुटि!\ndefine('MY_OBJECT', new stdClass()); // काम करता है\n?>
\n\n

निष्कर्ष: अधिकांश कार्यों के लिए दोनों विकल्प उपयुक्त हैं। लेकिन यदि आपको ऑब्जेक्ट संग्रहीत करने की आवश्यकता है — केवल define()।

\n\n

3. संदर्भ: वैश्विक बनाम क्लास कॉन्स्टेंट

\n\n

const एक बहुमुखी उपकरण है। इसका उपयोग क्लास के बाहर (वैश्विक कॉन्स्टेंट) और क्लास के अंदर (क्लास कॉन्स्टेंट) दोनों जगह किया जा सकता है।

\n\n

define() केवल वैश्विक कॉन्स्टेंट के लिए है। क्लास के अंदर

ब्लॉग

पुस्तक अनुशंसाएँ