Different ways of instantiating class instances in PHP -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 2 जवाब
सक्षम नहीं होने के लिए क्षमा चाहते हैं बेहतर इस मुद्दे को स्पष्ट। मैंने कुछ सरल परीक्षण करने की कोशिश की है और बहुत प्रकाश डालने में सक्षम नहीं हैं। किसी भी स्थिति में, मुझे आश्चर्य है कि, यदि कोई है, तो निम्न दो उदाहरणों के बीच अंतर मौजूद है:
& lt; php वर्ग foo {सार्वजनिक फ़ंक्शन __construct () {}} $ foo1 = new foo;
और यह:
& lt;? Php वर्ग foo {सार्वजनिक फ़ंक्शन __construct () {}} $ foo1 = new foo ();
ध्यान दें कि दूसरे उदाहरण में मैं 'नया' कीवर्ड के साथ कोष्ठक का उपयोग कर रहा हूं। अगर यहां मतभेद नहीं हैं, तो क्या मेरे फू क्लास घोषणापत्र में कुछ ऐसा हो सकता है जो अंतर पैदा करेगा? और अगर अंतर मौजूद है, तो क्या वे PHP के लिए विशेष हैं? धन्यवाद।
मुझे लगता है कि कोष्ठक का उपयोग करके अपने वर्गों को इन्स्तांत करना बेहतर है, भले ही कन्स्ट्रक्टर को ' टी किसी भी तर्क की आवश्यकता है जबकि आपके उदाहरण एक ही काम करते हैं, वे नहीं होगा अगर कन्स्ट्रक्टर बदल दिया। यह स्वाद और शैली का मामला है।
यह आपका पहला उदाहरण है:
& lt;? Php वर्ग foo {सार्वजनिक फ़ंक्शन __construct ()} $ foo1 = new foo;
यह काम करता है, लेकिन क्या हुआ अगर हमने ऐसा किया?
सार्वजनिक फ़ंक्शन __ रचना ($ db = null) {}
.. ठीक है, तो यह अभी भी काम करेगा, क्योंकि तर्कों में मूलभूत मान हैं।
लेकिन अगर हम ऐसा करते हैं?
सार्वजनिक कार्य __ रचना ($ db) {}
.. यह लापता तर्क के कारण टूट जाएगा, और तर्कों को पारित करने के लिए आपको कोष्ठकों की आवश्यकता है अगर आप कभी भी वापस चले गए और फू कन्स्ट्रक्टर को अधिक रोचक बना दिया, तो आप को सिर्फ सभी तर्कों के साथ कोष्ठक को जोड़ना होगा।
अंत में, भाषाओं करते हैं विकसित करें जब आप कोष्ठक का उपयोग करते हैं तो मैं कभी भी PHP शिकायत नहीं देखता, लेकिन यह हो सकता है एक दिन क्रोधी हो जाता है यदि आप नहीं करते हैं कुछ करना कहने के लिए नो-कोष्ठक के तरीके का उपयोग करें इस वर्ग को हम तत्काल तब्दील कर रहे हैं, कोई कन्स्ट्रक्टर नहीं है यह .. व्यक्तिगत स्वाद आप अनुपस्थिति का प्रयोग अर्थपूर्ण रूप से कर सकते हैं:
$ f = new foo; // वर्ग के कोई निर्माता नहीं है, या निर्माता के पास कोई तर्क नहीं है $ f = new foo (); // वर्ग में एक डिफ़ॉल्ट निर्माता के साथ एक कन्स्ट्रक्टर है जिसे हम बाद में $ f = new foo ($ bar) // वर्ग के एक कन्स्ट्रक्टर बना सकते हैं, और इसके लिए तर्क आवश्यक है
उपरोक्त समय बचा सकता है अगर एक बड़े कोड बेस में लगातार किया मुझे यकीन नहीं है कि अब जितना ज्यादा होगा, क्योंकि लोग परीक्षण में बेहतर होते हैं - लेकिन यह केवल मेरी राय है।
वर्तमान में, हालांकि - नहीं, दो उदाहरणों के बीच में कोई अंतर नहीं है।
Comments
Post a Comment