2009-07-06 11 views
59

को हटा दिया गया है मुझे अभी एक त्रुटि मिली है।संदर्भ द्वारा नए के रिटर्न वैल्यू को असाइन करना

जब मैं इस तरह एक वस्तु आवंटित करने के लिए प्रयास करें:

$obj_md = new MDB2(); 

त्रुटि मैं है "संदर्भ द्वारा नए की वापसी मान निर्दिष्ट करके हटा दिया गया है"। असल में मैं एक समाधान की तलाश में हूं लेकिन मैंने जो देखा है वह सिर्फ php.ini (error_reporting) की राजनीति को बंद कर देता है। मैंने भी कोशिश की है, लेकिन यह काम नहीं किया।

यह इतना confusing..I है आशा है कि आप मेरी मदद कर सकता है। अग्रिम में धन्यवाद।

+0

में new हटाने आप कर रहे हैं सुनिश्चित करें कि आपके कोड नहीं है: '$ obj_md = & नया एमडीबी 2(); 'वास्तव में यह एक चेतावनी जारी करनी चाहिए। –

+0

हाँ, मैं हूं। असल में ज़ेंड स्टूडियो मुझे बताता है कि चेतावनी है। –

+0

मुझे ज़ेंड से एक ही चेतावनी मिली लेकिन यह एक अन्य libaray के कारण हुआ था (xajax)। स्टैकट्रैक पर एक नज़र डालें और आपको पता चलेगा कि यह त्रुटि कहां से आती है। वैसे भी एक सरल खोज और प्रतिस्थापन के साथ इसे ठीक करने के लिए [जॉन्स उत्तर] (http://stackoverflow.com/a/7732137/956397) का पालन करें। – PiTheNumber

उत्तर

90

PHP5 में यह मुहावरा

$obj_md =& new MDB2(); 

आप सुनिश्चित करें कि आप अपने नमूना कोड में एक ampersand याद नहीं किया है बहिष्कृत हो गई है? इससे आपके द्वारा चेतावनी दी जाएगी, लेकिन इसकी आवश्यकता नहीं है और इसे हटाया जा सकता है।

देखने के लिए क्यों यह मुहावरा PHP4 में इस्तेमाल किया गया था, this manual page देखते हैं।

+3

नहीं, मेरे पास एम्पर्सेंड नहीं है। :( –

+0

मुझे यह कहना था कि मैं jpgraph का उपयोग कर रहा हूं। मुझे वास्तव में पता नहीं है कि यह महत्वपूर्ण है .. –

+0

मैनुअल पेज लिंक मर चुका है –

9

शायद MDB2 के निर्माता कुछ कोड एक $ चर का उपयोग करता है = & नई className();

7

&/एक पद्धति के लिए एक वस्तु पारित संदर्भ द्वारा एक चर करने के लिए एक नई वस्तु आवंटित करने के लिए PHP में प्रयोग किया जाता है। इसे PHP 5 में बहिष्कृत किया गया है क्योंकि PHP 5 डिफ़ॉल्ट रूप से संदर्भ द्वारा सभी चर को पास करता है।

+25

"PHP 5 डिफ़ॉल्ट रूप से संदर्भ द्वारा सभी चर को पास करता है।" यह सच नहीं है**। PHP5 सभी ** ऑब्जेक्ट्स ** संदर्भ द्वारा पास करता है, लेकिन अन्य वर्र्स डिफ़ॉल्ट रूप से डिफ़ॉल्ट होते हैं। [फुलर स्पष्टीकरण] (http://stackoverflow.com/questions/879/php-variables-passed-by-value-or-by-reference) – artfulrobot

+1

बिल्कुल क्या @artfullrobot ने कहा। –

-5
C:\wamp\www\..\libraries\pattemplate 

1.ini_set('display_errors', 0); 

$this->_modules[$moduleType][$sig] =&new $moduleClass; wrong 

$this->_modules[$moduleType][$sig] =new $moduleClass; Right 
+8

त्रुटियों को छिपाने की सिफारिश वास्तव में एक समाधान नहीं है –

+0

यह वास्तविक समाधान नहीं है, आप त्रुटियों को छुपा रहे हैं। आपको छिपाने वाली त्रुटियों के साथ समाधान दिखाना होगा। –

0

यह पीएचपी 5.3, जो WAMP 2.0i पैकेज जूमला में और नहीं आता है की वजह से हुआ।

आप इसे ठीक करने के लिए दो विकल्प हैं,

या तो WAMP 2 एच (पिछले संस्करण) या WAMP वेबसाइट से download PHP 5.2.9-2 ऐड-ऑन का उपयोग करें।

8

नितिन सही है - मुद्दा वास्तव में एमडीबी 2 कोड में है।

Replacement for PEAR: MDB2 on PHP 5.3 के अनुसार यदि आप एक संस्करण है जो PHP5.3 संगत है के लिए MDB2 की SVN संस्करण में अपडेट कर सकते हैं।

जैसा कि उत्तर मार्च 2010 में दिया गया था, और http://pear.php.net/package/MDB2/ कुछ महीने बाद रिलीज दिखाता है, मुझे उम्मीद है कि एमडीबी 2 का वर्तमान संस्करण भी इस मुद्दे को हल करेगा।

26

मैं हाल ही में एक साइट एक सर्वर है कि एक है कि पीएचपी 5.3.2 उपयोग कर रहा है के लिए PHP 5.2.17 उपयोग कर रहा था से SimplePie (http://simplepie.org/) का उपयोग कर ले जाया गया। यह इस कदम है कि मैं इस तरह के रूप त्रुटि संदेशों में से एक सूची प्राप्त करने के लिए शुरू किया के बाद था इस एक:

पदावनत: संदर्भ द्वारा नए की वापसी मान निर्दिष्ट हटा दिया गया है में .../php/लाइन पर simplepie.inc 738

इस मुद्दे के कई विचार विमर्श समीक्षा करने के बाद, मैं चीजों को simplepie.inc फ़ाइल में = नए साथ = & नई के सभी उदाहरणों की जगह द्वारा मंजूरी दे दी।

मुझे यह जानने के लिए पर्याप्त अनुभव नहीं हुआ है कि यह उन सभी मामलों में काम करेगा जहां इन त्रुटि संदेशों को प्राप्त किया गया है लेकिन यह इस विशेष मामले में काम करता है और यह कोशिश करने लायक हो सकता है।

5

मुझे एक ही समस्या थी। मेरे पास पहले से ही '&' था और फिर भी यह वही चेतावनी दे रहा था। मैं डब्ल्यूएएमपी के साथ PHP 5.3 का उपयोग कर रहा हूं और मैंने जो कुछ किया वह '&' संकेत था और चेतावनी समाप्त हो गई थी।

$obj= new stdClass(); //Without '&' sign. 
0

सिर्फ $obj_md =& new MDB2();

संबंधित मुद्दे