क्या मैं यह मानने में सही हूं कि कॉन्स गुण स्वचालित रूप से सार्वजनिक होते हैं? क्या उन्हें निजी या संरक्षित करने का कोई तरीका है?PHP कक्षा Constants - सार्वजनिक, निजी या संरक्षित?
अग्रिम धन्यवाद।
क्या मैं यह मानने में सही हूं कि कॉन्स गुण स्वचालित रूप से सार्वजनिक होते हैं? क्या उन्हें निजी या संरक्षित करने का कोई तरीका है?PHP कक्षा Constants - सार्वजनिक, निजी या संरक्षित?
अग्रिम धन्यवाद।
हां, वे वैश्विक रूप से तब तक पहुंच योग्य हैं जब तक कक्षा स्वयं लोड हो जाती है। जहां तक मुझे पता है कि आप PHP में कक्षा स्थिरांक की पहुंच को संशोधित नहीं कर सकते हैं।
आप सही हैं। आप प्रतिबिंब के माध्यम से कॉन्स्ट के साथ एक एक्सेस विनिर्देशक का उपयोग नहीं कर सकते हैं और न ही संशोधित कर सकते हैं। PHP bashing के लिए – webbiedave
कक्षा स्थिरांक में निजी/संरक्षित होने का विकल्प होना चाहिए क्योंकि सार्वजनिक रूप से कक्षा के आंतरिक विवरण का खुलासा किया जाता है कि अन्य वर्ग/कोड गलत तरीके से सोचने का उपयोग कर सकते हैं क्योंकि वे सार्वजनिक हैं क्योंकि वे सार्वजनिक हैं।
यह जानना अच्छा होगा कि एक निजी स्थिरता को बदलने से केवल उस कक्षा को प्रभावित किया जाएगा जिसमें दुर्भाग्य से हमारे पास यह विकल्प नहीं है।
वापस जब तुम वस्तु डिजाइन & विश्लेषण सीखने गया के लिए याद रखें ... आप वर्ग तरीकों देने के लिए और संभव सबसे प्रतिबंधित पहुँच जिम्मेदार बताते हैं, और बाद में जरूरत के रूप में (बहुत कठिन वापस दूसरे रास्ते से जाने के लिए उन्हें आराम क्योंकि अन्य वर्गों/कोड उनको उपयोग करना शुरू करें जो तब दूसरे कोड को तोड़ देंगे)।
कारगर युक्तियाँ
बेस्ट शर्त सिर्फ एक निजी या संरक्षित चर और अपर केस यह एक निरंतर दिखाने के लिए तैयार करना है। आप हमेशा निरंतर ($ value_to_be_constant) नामक एक वर्ग बना सकते हैं जो इसे बदलने से रोकने के लिए सही जादू विधियों/स्प्ल इंटरफेस लागू करता है।
मुझे पता है इस सवाल के 6 वर्ष
Php 7.1 (वर्तमान में RC1) वर्ग स्थिरांक पर दृश्यता निर्दिष्ट करने के लिए अनुमति देता है कर रहा हूँ।
class Token {
// Constants default to public
const PUBLIC_CONST = 0;
// Constants then also can have a defined visibility
private const PRIVATE_CONST = 0;
protected const PROTECTED_CONST = 0;
public const PUBLIC_CONST_TWO = 0;
//Constants can only have one visibility declaration list
private const FOO = 1, BAR = 2;
}
php7.1 के रूप में, आप पहुँच संशोधक (public
, private
या के साथ अपने वर्ग स्थिरांक परिभाषित कर सकते हैं protected
)।
<?php
class superheroes{
public const kal_el = 'Superman';
protected const bruce_wayne = 'Batman'; # works php7.1 onwards
private const anthony_stark = 'Iron Man'; # works php7.1 onwards
public static function show_remaining(){
echo self::bruce_wayne, '<br />';
echo self::anthony_stark, '<br />';
}
}
echo superheroes::kal_el, '<br />';
superheroes::show_remaining();
क्रेडिट:: http://dwellupper.io/post/48/defining-class-constants-in-php
उन्हें छिपा बनाने के लिए क्या कारण है कि निम्न उदाहरण पर एक नज़र है? भले ही वे सार्वजनिक हैं - वे केवल पढ़े जाते हैं। – zerkms
कॉन्स्टेंट सार्वजनिक होने के लिए हैं, क्योंकि वे कक्षा के बारे में अपरिवर्तनीय तथ्यों का वर्णन करना चाहते हैं, राज्य या नहीं। तो उन्हें छिपाने में कोई मूल्य नहीं है। – StasM
उन्हें '__getStatic' के साथ भविष्य के संस्करणों में नकली बना सकता है। आम तौर पर यह संदिग्ध है यदि आपको स्क्रिप्टिंग भाषाओं में एक्सेस मॉडिफायर की आवश्यकता है। (जावास्क्रिप्ट/पायथन जिस तरह से अधिक ऑब्जेक्ट उन्मुख हैं उन्हें उनकी आवश्यकता नहीं है।) – mario