2015-10-22 4 views
5

2 गुणों के साथ Player नामक एक नया वर्ग बनाया है के साथ कार्य करना:पीएचपी कक्षा गुण

  1. name

  2. ID

कैसे निम्नलिखित कोड काम किया मुझे पता नहीं है मेरे लिए, यही कारण है कि मैं आपसे पूछ रहा हूं:

<?php 
$player = new Player(); 
$player->name = "Someone"; 
$player->ID = 123; 
$player->color = "Red"; // Why it worked? 
echo $player->color; // Worked great too! 
?> 

मैं एक संपत्ति color सेट कर सकता हूं और इसका उपयोग तब कर सकता हूं जब मैंने इसे अपनी कक्षा फ़ाइल में भी घोषित नहीं किया है। यह कैसे संभव है?

+2

PHP आपको उस संपत्ति को तब तक जोड़ने की अनुमति देगा जबतक कि आप इसे स्पष्ट रूप से __set() ओवरलोड करके नहीं करते हैं और जब आप करते हैं तो त्रुटि को फेंक देते हैं। –

+0

तो, लोग कक्षा घोषित करके खाली कक्षाओं का उपयोग कर सकते हैं? – EliKo

+0

मुझे इसका कभी भी उपयोग नहीं करना पड़ेगा, लेकिन मुझे लगता है कि ऐसा होगा कि लोग प्री-डिफ़ाइंड आउट-द-बॉक्स क्लास के साथ विभिन्न डेटा पार्ट्स को जोड़ सकें, जैसे कि ईमेल भेजने के लिए PHPMailer क्लास का उपयोग करना और फिर सहेजना किसी भी प्रकार के डेटाबेस आईडी ट्रैकिंग के लिए, उस उपयोगकर्ता के लिए जिसकी ईमेल अभी भेजा गया है, कक्षा में * रिकॉर्ड करने के लिए * जिसने उन्हें ईमेल भेजा था। यह मेरा अनुमान है ... – Martin

उत्तर

3

PHP में, सुविधा property overloading कहा जाता है ("ओवरलोडिंग" शब्द misused है! इसके बजाय यह "दुभाषिया हुक" जैसा कुछ होना चाहिए था)।

PHP में ओवरलोडिंग गतिशील रूप से गुणों और विधियों को "बनाना" प्रदान करता है। qoute

रूप में यदि वे वर्ग परिभाषा में घोषित किया गया है आप गतिशील गुणों का उपयोग कर सकते हैं; जैसे:

class A { 
} 

$a = new A(); 
$a->myProperty = 'something'; 
संबंधित मुद्दे