दिलचस्प पोस्ट
जावास्क्रिप्ट के द्वारा सीएसएस छद्म-तत्व शैलियों को बदलना एचटीएमएल iframe – स्क्रोल अक्षम करें बैकएंड से कोणीय 2 बूटस्ट्रैप विधि को प्रदान किए गए मापदंडों को कैसे पार करें MySQL: समूह फ़ंक्शन का अमान्य उपयोग कैसे "प्रकार विस्थापन" (संघ प्रकार) को परिभाषित करें? पायथन में संक्रमित विधियों की एक पंक्ति को कैसे तोड़ सकता है? निजी बनाम निजी JFreeChart पोलरप्लॉट: गणितीय अभिविन्यास दांतेदार एरे सी / सी ++ में मौजूद हैं? C # में जोड़ी-समानांतर चलन या खिड़की गणनाकर्ता स्लाइडिंग एक्सटेंशन के तरीके क्या हैं? त्रुटि: चयन में एक मुख्य प्रकार शामिल नहीं है एक निर्देशिका में सभी फाइलों के माध्यम से पाश को PHP स्क्रिप्ट करें? एक MYSQL डीबी पर ब्लॉब के रूप में संग्रहीत एक छवि को पुनः प्राप्त करें एक स्ट्रिंग में stdout / stderr अनुप्रेषित करें

नई स्व बनाम नई स्थिर

मैं PHP 5.2 पर काम करने के लिए PHP 5.3 लाइब्रेरी को परिवर्तित कर रहा हूं। मेरे रास्ते में खड़ी मुख्य चीज देर स्थिर बाध्यकारी का उपयोग करती है, जैसे return new static($options); , यदि मैं इसे return new self($options) करने के लिए परिवर्तित करता हूं तो क्या मुझे उसी परिणाम मिलेंगे?

new self और new static बीच अंतर क्या है?

वेब के समाधान से एकत्रित समाधान "नई स्व बनाम नई स्थिर"

क्या मुझे एक ही परिणाम मिलेगा?

ज़रुरी नहीं। मैं PHP 5.2 के लिए एक वैकल्पिक हल के बारे में नहीं जानता, हालांकि।

new self और new static बीच अंतर क्या है?

self उसी वर्ग को संदर्भित करता है जिसमें new कीवर्ड वास्तव में लिखा जाता है।

static , PHP 5.3 के देर से स्थैतिक बाइंडिंग में, उस पदानुक्रम में जिस वर्ग को आपने बुलाया,

निम्न उदाहरण में, B A से दोनों विधियों को सन्दर्भ करता है self आमंत्रण A के लिए बाध्य है क्योंकि यह A की पहली विधि के कार्यान्वयन में परिभाषित है, जबकि static कॉल किए गए वर्ग के लिए बाध्य है (यह भी get_called_class() देखें)

 class A { public static function get_self() { return new self(); } public static function get_static() { return new static(); } } class B extends A {} echo get_class(B::get_self()); // A echo get_class(B::get_static()); // B echo get_class(A::get_self()); // A echo get_class(A::get_static()); // A 

अगर यह कोड स्थिर नहीं है, तो आप मिलते- get_class($this) 5.2 में get_class($this) का उपयोग करके काम कर सकते हैं।

 class A { public function create1() { $class = get_class($this); return new $class(); } public function create2() { return new static(); } } class B extends A { } $b = new B(); var_dump(get_class($b->create1()), get_class($b->create2())); 

परिणाम:

 string(1) "B" string(1) "B"