2010-08-10 19 views
20

मैं नामस्थानों का उपयोग करने की कोशिश कर रहा हूं। मैं एक अलग नामस्थान के अंदर एक कक्षा का विस्तार करना चाहता हूँ। कक्षा का नाम वही है। उदाहरण:एक ही कक्षा नाम के साथ एक अन्य नामस्थान के साथ कक्षा को विस्तारित करना

जनक:

namespace Base; 

class Section extends Skeleton { 

protected $id; 

protected $title; 

protected $stylesheet; 
} 

बाल:

namespace Base2; 
use \Base\Section; 

class Section 
    extends \Base\Section { 

} 

यह एक आवेदन जो सिद्धांत 2 और Zend फ्रेमवर्क का उपयोग करता है। बेस/सेक्शन द्वारा उपयोग की जाने वाली कंकाल वर्ग केवल एक अमूर्त वर्ग है जिसमें जादू विधियां (__get, _set, आदि) शामिल हैं।

जब मैं एक \ Base2 \ धारा वर्ग यह एक त्रुटि फेंकता का दृष्टांत का प्रयास करें:

Fatal error: Cannot declare class Base2\Section because the name is 
already in use in /var/www/test/application/Models/Base2/Section.php 
on line 7 

किसी भी विचार है?

+0

क्या यह नामकरण योजना रखने में थोड़ा उलझन में नहीं है? –

+0

हां यह है, लेकिन यह असली नामकरण योजना नहीं है। केवल अनुभाग भाग वास्तविक है। नामस्थान बस यादृच्छिक हैं। –

+1

@Rene: क्या आप वाकई सुनिश्चित हैं कि वे _arbitrary_ नहीं हैं? –

उत्तर

40

बस पूरी तरह से योग्य नाम

namespace Base2; 

class Section 
    extends \Base\Section { 
} 

या aliasing

namespace Base2; 
use \Base\Section as BSection; 

class Section 
    extends BSection { 
} 
+0

Thnx, यह मेरे लिए काम करता है! –

9

जब आप कहते हैं

use \Base\Section 

आप अपने वर्तमान दायरे में धारा वर्ग खींच रहे हैं, एक संघर्ष जब पैदा कर रहा का उपयोग आप अनुभाग नामक एक नई कक्षा बनाना चाहते हैं। बस उपयोग कथन छोड़ दें।

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