2011-06-24 13 views
11

मैंने नामस्थानों का उपयोग करके थोड़ा वेब किया है। मेरे पास यह मेरे कंप्यूटर में है और मैं इसे मुफ्त होस्टिंग में ले जाने वाला हूं जो PHP 5.2 का उपयोग करता है। PHP 5.2 के लिए सिंटेक्स हाइलाइटर उन्हें त्रुटियों के रूप में व्याख्या करता है।PHP 5.2 में नामस्थान

नामस्थान php 5.2 द्वारा समर्थित हैं?

यदि नहीं है तो मौजूदा कोड में छोटे बदलावों के साथ उनका उपयोग कैसे करें?

+0

नहीं। इस प्यारा मैनुअल को पढ़ें: http://php.net/manual/en/language.namespaces.php –

+0

समर्थित नहीं होने पर, आप निश्चित रूप से उन्हें हटा सकते हैं। जैसा कि ऐसा होता है हाल ही में आया: http://stackoverflow.com/questions/1836387/strategy-for-developing-namespaced-and-non-namespaced-versions-of-same-php-code/3661724#3661724 - सुनिश्चित नहीं है कि आपने इसके लिए पूछा है, या यदि यह वास्तव में था सिंटैक्स हाइलाइटिंग के बारे में बस? – mario

+1

PHP प्रीप्रोकस अच्छा लगता है। लेकिन मैं वेरिएबल क्लास नामों का भी उपयोग करता हूं जिन्हें उस स्क्रिप्ट के साथ प्रोसेस नहीं किया जाता है। – kravemir

उत्तर

26

नामस्थान 5.3 से पहले समर्थित नहीं हैं। दुर्भाग्य से 5.2 में उनके लिए अनुकूलन करने का वास्तव में कोई तरीका नहीं है।

7

नेमस्पेस 5.3

कम से कम वर्गों के मामले में के रूप में ही उपलब्ध हैं, तो आप की जाँच करने के class_exists फ़ंक्शन का उपयोग कर सकते हैं अगर एक वर्ग पहले से ही एक तरह से परिभाषित किया गया है वैश्विक नामस्थान के भीतर नाम। __autoload() फ़ंक्शन के साथ युग्मित, आप एक सार्वभौमिक उपनाम बना सकते हैं और सिस्टम को मूल नाम से नामित दोनों कक्षाओं के साथ-साथ किसी प्रकार के अतिरिक्त पहचानकर्ता के साथ नाम की जांच कर सकते हैं। मैं एक उदाहरण के रूप में "एनएस" का उपयोग करूंगा।

function __autoload($class){ 
    try{ 
    require_once('ns'.$class.'.php'); 
    }catch(Exception $e){ 
    echo 'The class is unavailable in pseudo-namespace as well as global'; 
    } 
} 

बस सुनिश्चित करें कि जहां भी आप अपने मॉडल रखते हैं, पथ पथ की आवश्यकता होती है। आप उपनाम के बजाय एक अलग फ़ोल्डर का भी उपयोग कर सकते हैं।

इस तरह, किसी भी डुप्लिकेट कक्षाओं को मुख्य निष्पादन से अलग फ़ाइलों में रखा जा सकता है जो केवल तभी शामिल होते हैं जब वे वैश्विक में मौजूद न हों। हालांकि यह कक्षाओं का भौतिक रूप से नाम बदलने की समस्या को सख्ती से ठीक नहीं करता है, यह आपको संस्करण परिभाषा आदि के लिए अपनी परिभाषाओं को अलग-अलग निर्देशिकाओं में रखने की अनुमति देगा।

0

Ive बस इस समस्या से आ गया है, ive ने एक छवि अपलोड स्क्रिप्ट विकसित की है मैंने स्वयं और छवि प्रसंस्करण (फसल) की सहायता के लिए कुछ तीसरे पक्ष कोड को जोड़ा लेकिन वे नामस्थान का उपयोग करते हैं, मेरी डिवेलॉमेंट मशीन पर ठीक काम करते हैं, लेकिन जब मैं लाइव सर्वर पर अपलोड करता हूं तो मुझे एक पार्स त्रुटि मिलती है।

सौभाग्य से मेरे मेजबान, php 5.3 और 5.4 का समर्थन करता है तो Ive उनसे पूछा कि मेरे लिए 5.3 करने के लिए इसे बदलने के लिए, im उम्मीद है कि समस्या हो रही im का समाधान होगा, बस को हटाने नामस्थान निर्मित स्क्रिप्ट विफल :(

पॉल

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