निम्नलिखित कोड पर विचार करें, जिसमें एक जानबूझकर प्रोग्रामिंग त्रुटि के कारण सेटर को जानबूझकर तोड़ दिया गया है जो मैंने पिछले कुछ समय में वास्तविक के लिए बनाया है:
<?php
class TestClass {
private $testField;
function setField($newVal) {
$testField = $newVal;
// deliberately broken; should be `$this->testField = $newVal`
}
function getField() {
return $this->testField;
}
}
$testInstance = new TestClass();
$testInstance->setField("Hello world!");
// Actually prints nothing; getField() returns null
echo $testInstance->getField();
?>
तथ्य यह है कि मैंने $testField
कक्षा के शीर्ष पर घोषित किया , उस प्रोग्रामिंग त्रुटि को मुझसे छिपाने में मदद करता है। यदि मैंने क्षेत्र घोषित नहीं किया था, तो मुझे इस स्क्रिप्ट को कॉल करने पर अपनी त्रुटि लॉग पर मुद्रित निम्न चेतावनी के समान कुछ मिलेगा, जो संभवतः मेरे डिबगिंग की मदद करने के लिए मूल्यवान होगा - खासकर अगर मैं इस तरह से एक त्रुटि बनाने के लिए था एक बड़ा और जटिल वास्तविक दुनिया आवेदन:
PHP सूचना: अपरिभाषित संपत्ति: TestClass :: $ 13 पर लाइन में /var/www/test.php
घोषणा के साथ, कोई चेतावनी नहीं है।
शायद मुझे कुछ याद आ रहा है, लेकिन मुझे PHP में क्लास फील्ड्स घोषित करने के केवल दो कारणों के बारे में पता है: पहला, यह कि घोषणाएँ प्रलेखन के रूप में कार्य करती हैं, और दूसरी बात, कि घोषणाओं के बिना कोई भी संशोधक का उपयोग private
और protected
एक्सेस नहीं कर सकता है , जो हैं यकीनन उपयोगी है। चूंकि उत्तरार्द्ध तर्क सार्वजनिक क्षेत्रों पर लागू नहीं होता है - किसी ऑब्जेक्ट के अघोषित क्षेत्र को असाइन करना इसे सार्वजनिक करता है - ऐसा लगता है कि मुझे कम से कम अपने सभी सार्वजनिक क्षेत्र घोषणाओं पर टिप्पणी करनी चाहिए। टिप्पणियाँ सटीक एक ही दस्तावेज़ीकरण मान प्रदान करेंगी, लेकिन अगर मैं एक गैर-क्षेत्रीय क्षेत्र को पढ़ने की कोशिश करता हूं तो मुझे चेतावनी से लाभ होगा।
आगे के विचार पर, हालांकि, इसे रोकने के लिए समझ में नहीं आता है। चूँकि मेरे अनुभव में एक असिंचित क्षेत्र को पढ़ने की कोशिश करना एक बहुत ही सामान्य त्रुटि का कारण है, जो किसी निजी या संरक्षित क्षेत्र को अनुचित रूप से पढ़ने या संशोधित करने की कोशिश करने से अधिक है (मैंने पूर्व में कई बार अपने छोटे प्रोग्रामिंग करियर में किया है, लेकिन बाद वाला कभी नहीं। ), यह मुझे लगता है कि सभी क्षेत्र की घोषणाओं पर टिप्पणी करना - न केवल सार्वजनिक लोगों के लिए - सबसे अच्छा अभ्यास होगा।
मुझे जो झिझक है वह यह है कि मैंने कभी किसी और को उनके कोड में ऐसा करते नहीं देखा। क्यों नहीं? क्या उन क्षेत्रों को घोषित करने का कोई लाभ है, जिनके बारे में मुझे जानकारी नहीं है? या क्या मैं फील्ड घोषणाओं के व्यवहार को बदलने के लिए किसी तरह से PHP के कॉन्फ़िगरेशन को संशोधित कर सकता हूं ताकि मैं वास्तविक फ़ील्ड घोषणाओं का उपयोग कर सकूं और फिर भी "अपरिभाषित संपत्ति" चेतावनियों से लाभान्वित हो सकूं? या फिर कुछ और है जो मैंने अपने विश्लेषण में याद किया है?
TRUE === $variable
तुलना करने के बजाय गलती से खुद को रोकने के लिए ऐसा करना।