2010-10-09 18 views
10

जब मैं बाल का एक उदाहरण बनाने मैं अलग फ़ोल्डरphp कैसे बच्चे वर्ग के __DIR__ पाने के लिए

class Parent 
{ 
    public $path = null; 

    function __construct() 
    { 
     $this->path = __DIR__; 
    } 
} 

और

class Child extends Parent 
{ 

} 

तो में दो वर्गों है:

$child = new Child(); 
echo $child->path 

मैं माता-पिता के लिए रास्ता प्राप्त करें। मैं वास्तव में चाहता हूं कि बच्चे को रास्ता मिल जाए। मैं बाल वर्ग को संशोधित नहीं कर सकता।

क्या यह संभव है?

+1

मत सोचो यह किया जा सकता है। आपको बच्चे की निर्देशिका जानने की आवश्यकता क्यों है? आप इसे क्यों संशोधित नहीं कर सकते? –

+0

यह असंभव है। –

+0

tandu, मैं चाइल्ड्स को संशोधित नहीं कर सकता, क्योंकि उन्हें उपयोगकर्ताओं द्वारा एक्सटेंशन के रूप में जोड़ा जाता है। और उपयोगकर्ताओं को यह बनाने के लिए मजबूर होना बुरा होगा कि वे __DIR__ चीज़ को उनके द्वारा बनाए गए प्रत्येक वर्ग में जोड़ दें। यहां मूलभूत प्रोग्राम द्वारा आवश्यक बुनियादी कार्यक्षमता का प्रतिनिधित्व करता है ताकि यह बाल की निर्देशिका में संग्रहीत संसाधनों को स्वत: लोड कर सके। तो कोर प्रोग्राम सभी उपयोगकर्ता परिभाषित बच्चों को स्वत: लोड करता है और संबंधित संसाधनों को स्वचालित रूप से लोड करता है। – ehpc

उत्तर

22

आप जो खोज रहे हैं पाने के लिए reflection का उपयोग कर सकते हैं:

$child = new Child(); 
$class_info = new ReflectionClass($child); 
echo dirname($class_info->getFileName()); 
+0

धन्यवाद, bradym। मुझे इसी की जरूरत थी। – ehpc

+0

यदि यह काम करता है, तो कृपया चेकबॉक्स पर क्लिक करके स्वीकार किए गए उत्तर को चिह्नित करें। इससे इसे "अनुत्तरित प्रश्न" सूची से हटा दिया जाएगा। – bradym

+0

मैंने पहले से ही ऐसा किया है, लेकिन ऐसा लगता है कि कल स्टैक ओवरफ्लो पर गड़बड़ कर इसे वापस घुमाया .. – ehpc

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