मेरे पास एक कक्षा है जो अन्य वर्ग के नामों के लिए कक्षा उपनाम स्थापित करती है। जब इस वर्ग के अंदर एलियस क्लास के माध्यम से एक फ़ंक्शन कहा जाता है, तो मुझे यह जानने की ज़रूरत है कि कौन से उपनाम का उपयोग किया गया था। PHP में ऐसा करने का कोई तरीका है?PHP में, class_alias का उपयोग करते समय आपको अलियोजित वर्ग कैसे मिलता है?
class foo
{
public static function test()
{
var_dump(get_called_class());
}
}
class_alias('foo', 'bar');
foo::test();
bar::test();
कौन सा आउटपुट:
मैं निम्नलिखित कोड की कोशिश की है
string 'foo' (length=3)
string 'foo' (length=3)
लेकिन मैं उत्पादन string 'bar' (length=3)
बजाय करने के लिए bar::test();
चाहते हैं। स्ट्रॉज़ पर ग्रासिंग, __CLASS__
और get_class()
सभी एक ही परिणाम उत्पन्न करते हैं। मुझे PHP दस्तावेज़ में कुछ और नहीं मिल रहा है जो मुझे इस समस्या से मदद करेगा, लेकिन उम्मीद है कि मैं कुछ दिख रहा हूं।
class_alias का उपयोग करते समय आपको aliased कक्षा कहां मिलती है?
मैं व्यक्तिगत रूप से कक्षा को अलियासिंग नहीं करने की सलाह देता हूं। यह केवल आँसू में खत्म होने जा रहा है। – GordonM
आप तब तक नहीं कर सकते जब तक आप भयानक डीबग_बैकट्रैस() विधि का उपयोग नहीं करते ... बार :: test() बार वर्ग में परीक्षण() को कॉल नहीं कर रहा है, जो foo वर्ग का डुप्लिकेट या क्लोन है; यह foo क्लास में टेस्ट() को कॉल कर रहा है, जो कि बार के उपनाम भी होता है, इसलिए स्वाभाविक रूप से get_called_class() "foo" देता है। –
डुबकी http://stackoverflow.com/questions/6245705/get-top-level-class-name-when-inheritance-and-class-alias-is-used – CBusBus