PHP

2013-01-10 30 views
12

के लिए विस्तृत प्रकार-संकेत देना नेटबीन्स में किसी अन्य दस्तावेज़ टैग के साथ टाइप-संकेत का विस्तार करना संभव है?PHP

मैं @scope टैग के साथ टाइप-हिंटिंग का विस्तार करने का एक तरीका ढूंढ रहा हूं जो शामिल फ़ाइलों को किसी ऑब्जेक्ट स्कोप तक पहुंच प्राप्त करने की अनुमति देगा।

उदाहरण:

file: template.php 
<?php /* @var $this MyObject */ 

यह केवल के लिए सार्वजनिक चर और तरीकों के प्रकार-हिंट करने की अनुमति होगी।

file: template.php 
<?php /* @scope MyObject */ 

कौन सा फ़ाइल सामग्री बनाना होगा कार्य करने के लिए जैसे कि यह MyObject दायरे में होगा: मुझे क्या करना आशा करती हूं कि @scope टैग यह MyObject दायरे में पहुँच प्राप्त करने के लिए अनुमति के साथ टाइप इशारा विस्तार करने के लिए है और $this निजी तरीकों का संकेत देगा।

अब, मुझे नेटबीन्स मंच के विकास में कोई अनुभव नहीं है लेकिन मेरे पास जावा अनुभव है। अगर मैं इसे पूरा करना चाहता था, तो मैं कहां से शुरू करूंगा?

उम्मीद है कि यह किसी प्रश्न का बहुत कमजोर नहीं है।

+0

मैं कुछ भी इसी तरह की तलाश कर रहा हूं, [link] (https://platform.netbeans.org/tutorials/nbm-java-hint.html#creatingthemoduleproject) में समझाया गया है। हालांकि मैं इसे php के लिए चाहता हूं जबकि लिंक केवल जावा –

उत्तर

2

अतीत में (नेटबीन के पुराने संस्करण) टाइप-संकेत एक वर्ग (जिसमें ऑब्जेक्ट उपयोग में था) से सभी विधियों को दिखा रहा था, यानी सभी सार्वजनिक, संरक्षित, निजी और यहां तक ​​कि स्थैतिक तरीकों। अब, नेटबीन की नई रिलीज में, यह बग तय किया गया था और जब ऑब्जेक्ट पर टाइप-संकेत केवल सुलभ विधियों/गुणों को टाइप-संकेतित किया गया था।

यह केवल इसलिए है क्योंकि आपका टेम्पलेट किसी वर्ग की निजी संपत्ति/विधि को एक्सेस/कॉल नहीं कर सकता है और साथ ही यदि आपके पास कोई ऑब्जेक्ट (क्लास का उदाहरण) है, तो आप इसे कक्षा की स्थिर गुणों तक पहुंच/कॉल नहीं कर पाएंगे/तरीकों।

एक ही लागू होता है अगर आप वर्ग के अंदर टाइप-संकेत करने को तैयार हैं - $this->| अभी प्रकार- इशारा सूचियों सभी सार्वजनिक, संरक्षित और निजी तरीके (| कर्सर है), जबकि स्थिर गुणों और विधियों अभी भी कर रहे हैं असुचीब्द्ध। दूसरी तरफ, यदि आप MyClass::| पर टाइप-इशारा करते हैं तो केवल स्थिर गुण/विधियां सूचीबद्ध हैं और फिर, MyClass कक्षा के अंदर सभी सार्वजनिक, संरक्षित और सार्वजनिक सूचीबद्ध होते हैं, जबकि निजी लोगों से बाहर पहुंचते समय सूची में अनुपलब्ध हैं (बहुत सही)।

तो आप जिस कार्यक्षमता का अनुरोध कर रहे हैं वह गलत है और encapsulation के सही सिद्धांतों से इनकार करता है।

+1

के लिए इसे कैसे करना है, यह जावा या अन्य भाषाओं के लिए सच हो सकता है, लेकिन PHP किसी वर्ग के दायरे को किसी अन्य फ़ाइल में विस्तारित करने की अनुमति देता है। इस तरह के व्यवहार को कक्षा के एक तरीके के अंदर 'शामिल' एक और फ़ाइल द्वारा हासिल किया जाता है। उस स्थिति में फ़ाइल को संलग्न वर्ग (यहां तक ​​कि निजी) के सभी विधियों और गुणों तक पहुंच है। तंत्र अन्य भाषाओं में 'आंशिक कक्षाओं' के समान ही है, सिवाय इसके कि इसमें PHP में कोई औपचारिक वाक्यविन्यास नहीं है और किसी को टाइप संकेतों का उपयोग करना होगा। इस तंत्र का प्रयोग आमतौर पर कई PHP ढांचे के टेम्पलेट्स द्वारा किया जाता है। चाहे यह एक अच्छा अभ्यास है या नहीं, एक और मामला है। –

+0

मैं इसे एक बहुत अच्छा अभ्यास कहूंगा क्योंकि आप पूरी तरह से कोड से मार्कअप अलग करते हैं। हां, मैं 'CreateUserView -> CreateUserView.php'' दृश्य बनाता हूं और उस फ़ाइल के साथ-साथ मैं 'CreateUserView.tpl.php' के रूप में टेम्पलेट भी बनाता हूं जो मेरा विस्तारित व्यू 'CreateUserView' स्वचालित रूप से लोड होता है, और टेम्पलेट कक्षा का हिस्सा है एक ही दायरे के साथ। – Daniel

0

मुझे पता है कि हमें किसी भी उपकरण का सुझाव नहीं देना चाहिए, लेकिन कभी-कभी मैं इस भावना का विरोध नहीं कर सकता कि लोग गलत के साथ समस्याओं को हल करने की कोशिश कर रहे हैं। मेरी राय में नेटबीन धीरे-धीरे ग्रहण के चरणों का पालन कर रहा है, जो लगभग समय के साथ PHP के लिए पूरी तरह से त्याग दिया गया समर्थन है। हालांकि अन्य आईडीई सख्ती से PHP भाषा के लिए डिज़ाइन किया गया है, जो बॉक्स से कुछ समस्याएं हल करता है।

व्यक्तिगत रूप से मुझे एक उपकरण चाहिए जो मुझे सबसे अधिक कार्यक्षमता देता है मुझे शुरुआत से ही आवश्यकता है। मुझे प्लगइन्स लिखने में कोई दिलचस्पी नहीं है, जो मेरा समय लेती है और समय के साथ बहिष्कृत हो सकती है। तो मैंने एक वाणिज्यिक आईडीई चुना, जो मुझे और अधिक देता है, फिर भी, और वैसे - यह पूरी तरह से प्रश्न में शामिल आपकी आवश्यकताओं को पूरा करता है। यदि आप PHP कोड लिखने जा रहे हैं तो मैं दृढ़ता से सुझाव देता हूं कि आप प्रोफेसरियल टूल के लिए भुगतान करने पर विचार करें।

इस मुद्दे के बारे में मैं सिर्फ एक फीचर अनुरोध के लिए एक उदाहरण लिंक देने जा रहा हूं, जो दिखाता है कि प्रश्न में समस्या को कैसे जोड़ा गया: Allow protected member access on @var $this (i.e. in views)। इसके अलावा कई related features हैं, जो आपको दिलचस्प लगेगा।

तो मेरी राय संक्षेप में यह है कि: यदि आप स्क्रू को कसने के लिए जा रहे हैं तो हथौड़ा नहीं, एक स्क्रूड्राइवर का उपयोग करें।