2012-08-01 6 views
5
<?php 
// $smith = ""; 
    $submit ="button_a"; 

    if($submit == "button_a") { 
     $smith = "button_a"; 
    } 
    elseif($submit == "button_b"){ 
     $smith = "button_b"; 
    } 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
</head> 
<body> 

<p> 
    <?php echo($smith); ?> 
</p> 

</body> 
</html> 

PHPSTORM प्रत्येक फ़ाइल के लिए ध्वज प्रदान करता है: लाल - त्रुटियां, पीला - चेतावनी, हरा - ठीक है।phpstorm चेतावनी php चर परिभाषित नहीं किया गया हो सकता है

शीर्षलेख के ऊपर PHP $ smith के लिए मान असाइन करेगा। शरीर में, मुझे $ स्मिथ पर एक चेतावनी मिलती है कि यह अपरिभाषित हो सकता है। यदि मैं PHP कोड के शीर्ष पर सभी चर घोषित करता हूं, ($ smith = "";) यह खुश है (कोई चेतावनी नहीं)।

क्या ऐसी कोई चीज है जो मुझे इन चेतावनियों को रोकने के लिए करनी चाहिए?

मुझे यह जांचने के लिए हर कोई टिप्पणी करने का विचार पसंद नहीं है और मैं उन्हें बंद नहीं करना चाहता हूं।

यह तब होता है जब मैं अपनी db_login.php फ़ाइल को शामिल करता हूं जो चार या पांच चर परिभाषित करता है। मेरे पास WAMP, MAMP, और असली नली के लिए अलग db_login.php फ़ाइलें हैं I

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

+2

में मैं अच्छी तरह से हमेशा की घोषणा/किसी भी उपयोग करने से पहले एक चर initialising यद्यपि सिफारिश करेंगे है ... डिबगिंग बनाता है इतना आसान। – Brian

+0

... और सेटिंग्स के लिए वैश्विक चर का उपयोग नहीं करना (उदा। डीबी विवरण इत्यादि - सहायता के लिए स्थिर वर्ग) - यदि यह आपका स्वयं का कोड है, तो निश्चित रूप से :) – LazyOne

उत्तर

6

हाँ, इस चेतावनी से छुटकारा पाने के लिए आप दो चीजें कर सकते हैं। आप क्या कहा:

$smith = ""; 
if($submit == "button_a") { 
    $smith = "button_a"; 
} 
elseif($submit == "button_b"){ 
    $smith = "button_b"; 
} 

या जाँच अगर यह सेट है जब आप इसे प्रिंट:

<?php 
    if(isset($smith)) { 
     echo($smith); 
    } 
?> 

बहरहाल, यह सिर्फ एक चेतावनी है, और यह दे रहा है आप जानते हैं कि वहाँ एक शर्त है कि यह है कि $smith जीता परिभाषित नहीं किया जाएगा (जब $submit"button_a" नहीं है और "button_b" नहीं है)। यदि वह स्थिति होती है, तो आप $smith प्रिंट करते समय प्रिंट करेंगे, जो आपकी स्क्रिप्ट में एक बग हो सकता है।

+1

PHPSTORM मैंने सोचा था उससे ज्यादा चालाक है। अगर मैं अन्यथा बदलता हूं ताकि कोड के माध्यम से सभी पथ एक मान निर्दिष्ट कर सकें, यह खुश है। मेरे db_login के बारे में क्या फ़ाइल है जो डेटाबेस, उपयोगकर्ता, पासवर्ड, टेबल इत्यादि को परिभाषित करती है। इसे फ़ाइल में शामिल करने के लिए कोई भी तरीका है ताकि मुझे उन सभी को पूर्वनिर्धारित करने की आवश्यकता न हो? – mkstlwtz

+0

क्योंकि तब ऐसी कोई शर्त नहीं है जिसमें '$ smith' परिभाषित नहीं किया जाएगा। यह वास्तव में सहायक (आईएमओ) है, क्योंकि यह आपको बता रहा है कि एक शर्त मौजूद है जहां आप एक चर का उपयोग कर रहे हैं जिसे परिभाषित नहीं किया गया है। यदि आप स्क्रिप्ट को "बग" शर्तों के साथ निष्पादित करते हैं तो आपको केवल यह जानकारी PHP से प्राप्त होगी (यानी जहां '$ submit'' बटन_ए' या 'बटन_बी' नहीं है)। फ़ाइल समस्याओं को शामिल करने के लिए, नीचे दीरी का उत्तर देखें। – nickb

14

आप चरम पहुंच से पहले एक ही निष्पादन प्रवाह में शामिल कथन शामिल होने पर अनिर्धारित चर रिपोर्टों को अनदेखा करने के लिए PHPStorm को बता सकते हैं। आपको इसे 'अपरिभाषित चर' में मिलेगा - अनदेखा 'शामिल करें' और 'आवश्यकता' कथन। यह डिफ़ॉल्ट रूप से सक्षम है, इसलिए आपको इसे अक्षम करना चाहिए।

enter image description here

नोट: सेटिंग File > Settings (Ctrl+Alt+S) > Project Settings > Inspections > PHP > Undefined > Undefined variable

+0

यह सही है। धन्यवाद। – mkstlwtz

+3

ये सेटिंग्स कहां हैं? – bafromca

+1

फ़ाइल> सेटिंग्स (Ctrl + Alt + S)> परियोजना सेटिंग्स> निरीक्षण> PHP> अपरिभाषित> अपरिभाषित चर – Kobra

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