2012-11-08 6 views
5

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

क्या कोई उपकरण/सेवा/कुछ भी है, जो वही काम करेगा जो नियंत्रक में सेट चर को मिलेगा लेकिन फिर दृश्य में उपयोग नहीं किया जाएगा। यह पूरी तरह से स्वचालित नहीं है।

उदाहरण के लिए यदि आप अपने नियंत्रक में निम्नलिखित है:

$this->set(array(
    'variable1' => $variable1, 
    'variable2' => $variable2 
)); 

और दृश्य इस तरह दिखता है:

<p>Peter ate <?php echo $variable1; ?> apples. 

यह लोगों का ध्यान जाएगा या किसी अन्य तरीके से variable2 पहचान (यह है कि दिए गए लेआउट में भी प्रयोग नहीं किया जाता है)।

+0

+1 - अगर कोई इसे साफ तरीके से कर सकता है तो मैं बहुत 0_0 होगा क्योंकि समस्या यह है कि दृश्यों को पारित किए गए वर्रों को अक्सर सरणी या समान रूप से किया जाता है।वे, अन्य वर्रों के साथ स्थानीय रूप से परिभाषित किए जाते हैं। यह तथ्य है कि वे स्थानीय बन जाते हैं और केवल तब मौजूद होते हैं जब निष्पादन उस कार्य (रन टाइम पर) के भीतर होता है जो "समस्या" है। इसका मतलब है कि प्रतिबिंब बेकार है (क्योंकि यह केवल कोड को देखता है, यह वास्तव में यह निष्पादित नहीं करता है कि रन टाइम पर स्थानीय वर्र्स क्या बनाए जाते हैं, इसका उपयोग करते हुए निकालें() या $$)। सौभाग्य। – VBAssassin

उत्तर

-3

बस $GLOBAL प्रिंट करें, यह आपको उन सभी चरों को दिखाएगा जो आपके लिए उपलब्ध हैं।

+2

यह सभी चर दिखाएगा, न केवल अप्रयुक्त लोगों .. – gintas

+1

@gintas यदि वे '$ ग्लोबल 'सरणी में हैं तो वे परिभाषित" परिभाषित "परिभाषा के अनुसार हैं। – Neal

+0

भ्रम के लिए खेद है, प्रश्न में मैंने चर के बारे में पूछा जो परिभाषित हैं, लेकिन उपयोग नहीं किए जाते हैं। – gintas

7

अपने कोडबेस पर PHP Mess Detector चलाने का प्रयास करें।

इसके लिए नेटबीन्स plugin भी है। बस इसे केकपीएचपी स्रोत पर न चलाएं, या आपको स्पष्ट समझ मिलेगी कि वास्तव में यह कितना भयंकर रूप से टूटा हुआ है।

प्रतिकूल हो सकता है। और आपको धार्मिक प्रकृति का संज्ञानात्मक विसंगति का कारण बनता है।

+0

मेरा अनुमान है कि PHP मेस डिटेक्टर जो गिंटस चाहता है उसके लिए काम नहीं करेगा - क्योंकि मोडल -> रन रन पर चर को पार करके किया जाता है और मैं शर्त लगा रहा हूं कि PHP मेस डिटेक्टर इसका पता नहीं लगा सकता (और मैं अगर यह कर सकता है तो बहुत प्रभावित है :) खासकर जब से यह स्थानीय दायरा है और वैश्विक नहीं है। हालांकि अच्छा लगता है – VBAssassin

0

मैं एक समय में एक cakePHP इस्तेमाल नहीं किया है लेकिन मैं एक दृश्य में निम्नलिखित का उपयोग करके सभी दृश्य चर ouput करने में सक्षम होने याद

<?php pr($this->_viewVars); ?> 

जो निर्माण करना चाहती किसी के लिए एक अच्छा प्रारंभिक बिंदु हो सकता है एक केकपीएचपी व्यू में अप्रयुक्त दृश्य चर का पता लगाने के लिए एक उपकरण।

1

मैं केवल ऐसा करने के लिए एक तरीका सोच सकता हूं - और यह आपको हर बार ऐसा करने पर एक मोडल के माध्यम से देखने के लिए पारित पैराम को ट्रैक करने देगा।

एक ऐसी कक्षा बनाएं जो ArrayAccess लागू करती है। फिर ऑफसेट गेट() विधि का उपयोग करके यह आपको ट्रैक करने की अनुमति देगा कि सरणी में कौन से चर का उपयोग किया गया है (इस मामले में, किसके लिए "उपयोग किया गया")। फिर किसी भी अप्रयुक्त चर के नोटिस को ट्रिगर करने के लिए __destruct() जादू विधि का उपयोग करें: डी

ऐसा करने से आपको उस मोडल से पारित सटीक चर बताएंगे जो उपयोग नहीं किए गए हैं, लेकिन केवल तभी ऐसा कर सकते हैं यदि आप निम्न कार्य करते हैं :

  • कक्षा के एक उदाहरण का उपयोग करके मोडल से देखने के लिए सभी दृश्य पैराम जोड़ें (सरणी पहुंच के साथ ताकि आप अभी भी $ vars ['name'] = 'scott' आदि कर सकें)।
  • दृश्य इस तरह वस्तु से सीधे चर का उपयोग करने की आवश्यकता होगी: $ पैरामीटर [ 'नाम'] और या निकालने की तरह कुछ का उपयोग कर चर पुन: नहीं $$

क्षमा करें यह एक क्लीनर समाधान नहीं है, लेकिन यह सब मैं अभी सोच सकता हूं (यह 3:30 बजे है)।

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