2011-12-03 10 views
8

का फ़ाइल नाम प्राप्त करें मान लें कि मेरे पास दो फाइलें हैं, प्रत्येक में एक वर्ग है। मैं अभिभावक वर्ग के भीतर, बाल वर्ग कहां फ़ाइल नाम प्राप्त कर सकता हूं?विस्तारित कक्षा

फ़ाइल 2 (बच्चे वर्ग):

class B extends A{ 

} 

फ़ाइल 1:

class A{ 

    final protected function __construct(){ 
    // here I want to get the filename where class B is, 
    // or whatever class is the child 
    } 

} 
+2

कक्षाएं उस संरक्षित कन्स्ट्रक्टर के साथ तत्काल कैसे हैं? – Phil

+0

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

उत्तर

15

नहीं वास्तव में यकीन है कि क्या उद्देश्य यह कार्य करता है, लेकिन यहाँ तुम जाओ:

class A{ 

    final protected function __construct(){ 
    $obj = new ReflectionClass($this); 
    $filename = $obj->getFileName(); 
    } 

} 
+0

नहीं [ReflectionObject] (http://php.net/manual/en/class.reflectionobject.php) सही विकल्प होगा? – Phil

+0

आपको कन्स्ट्रक्टर की पहुंच को 'सार्वजनिक' में बदलना चाहिए। – webbiedave

+2

@webbiedave यह कहना मुश्किल है कि ओपी के संरक्षित कन्स्ट्रक्टर के साथ ऑब्जेक्ट्स कैसे बनाते हैं लेकिन उनके कारण हो सकते हैं। शायद उनके पास 'ए' – Phil

3

आप कर सकते हैं धोखा देती है और debug_backtrace का उपयोग करें:

class A { 
    final protected function __construct() { 
    $stacktrace = @debug_backtrace(false); 
    $filename = $stacktrace[0]['file']; 
    } 
} 
संबंधित मुद्दे