2012-07-10 9 views
13

मेरे पास डेटाबेस में भुगतान रिकॉर्ड डालने का एक छोटा वर्ग है। नीचे दिया गया हैस्थिर फ़ंक्शन पर घातक त्रुटि क्यों दिखा रहा है

<?php 

class pay{ 
     public static function pay($user, $income, $type, $refid='--'){ 
     mysql_query("INSERT INTO earn VALUES (NULL, '$user', '$income', '$refid', '$type', ".time().")"); 
     } 
    } 

?> 

लेकिन ब्राउज़र नीचे गंभीर त्रुटि देता है ..

Fatal error: Constructor pay::pay() cannot be static in F:\xampp\htdocs\new\sts\class.php on line 41

मैं उलझन यही कारण है कि त्रुटि होने वाली .. मदद कृपया मुझे समझने के लिए कर रहा हूँ।

उत्तर

28

यदि आपके पास कोई विधि नाम है जो कक्षा के नाम के समान है, तो इसे एक निर्माता माना जाता है। रचनाकार स्थिर नहीं हो सकते हैं। आपको या तो इस वर्ग या विधि का नाम बदलना होगा, या विधि स्थिर बनाना होगा और जब आप इसका उपयोग करना चाहते हैं तो कक्षा का एक उदाहरण बनाएं।

9

PHP 5 में, रचनाकारों को __construct कहा जाता है। PHP 4 में यह कक्षा का नाम होता था, उदा। function payclass pay के लिए। PHP 5 PHP 4 के साथ पीछे संगत है, इसलिए यह अभी भी काम करता है। रचनाकार static नहीं हो सकते हैं।

1

कन्स्ट्रक्टर को किसी ऑब्जेक्ट के निर्माण पर बुलाया जाता है, और इस प्रकार स्थिर नहीं हो सकता है। एक समारोह को कक्षा के समान नामकरण करके, php सोचता है कि आप चाहते हैं कि यह निर्माता

1

एक विधि जिसका नाम उस वर्ग के समान है जो इसे परिभाषित किया गया है, यह सामान्य विधि नहीं है बल्कि एक कन्स्ट्रक्टर है कक्षा के नए उदाहरण बनाते हैं। रचनाकारों को स्थैतिक होने की अनुमति नहीं है, क्योंकि उनका पूरा बिंदु नव निर्मित वर्ग उदाहरण पर कार्य करना है।

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