मैं php.net पर प्रलेखन पढ़कर PHP का उपयोग और यह सीखने के लिए नया हूँ - वर्तमान के लिए assert() और assert_options() कार्यों उन ज़ोर के बारे में पता करने के लिए() लेकिन यह क्यों की व्याख्या नहीं करता पेज हम उनका उपयोग करते हैं और ये कार्य सरल शब्दों में क्या करते हैं। क्या कोई यह बता सकता है कि ये कार्य क्या करते हैं और हम उन्हें PHP में क्यों उपयोग करते हैं?हम php में assert() और assert_options() का उपयोग क्यों करते हैं?
उत्तर
Assert()
एक चालाक फ़ंक्शन है जो हमारे प्रिंट स्टेटमेंट के समान ही काम करता है, लेकिन अगर कोई निश्चित स्थिति मेल नहीं खाती है तो इसका कोई प्रभाव नहीं पड़ता है। अनिवार्य रूप से, assert()
का उपयोग यह कहने के लिए किया जाता है "यह कथन सत्य होना चाहिए - यदि यह नहीं है, तो कृपया मुझे बताएं"। इस निम्न उदाहरण पर विचार करें:
<?php
print "Stage 1\n";
assert(1 == 1);
print "Stage 2\n";
assert(1 == 2);
print "Stage 3\n";
?>
यहाँ हम पहली कॉल जोर देते हुए कि एक के बाद एक के बराबर होना चाहिए, और दूसरी कॉल जोर देते हुए कि एक से दो के बराबर होना चाहिए के साथ दो assert()
रों है,। चूंकि 1 और 2 जैसे स्थिरांक को फिर से परिभाषित करना असंभव है, पहले assert()
हमेशा सत्य का मूल्यांकन करेंगे, और दूसरा हमेशा झूठे मूल्यांकन करेगा।
स्टेज 1 स्टेज 2 चेतावनी: ज़ोर()
[http://www.php.net/function.assert]: अभिकथन रेखा 5
पर /home/paul/sandbox/php/assert.php में विफल रहा है यहाँ स्क्रिप्ट से आउटपुट हैस्टेज 3
ध्यान दें कि पहले assert()
उत्पादन में बिल्कुल, क्योंकि यह true
को मूल्यांकन नहीं देखा जाता है, जबकि दूसरे assert()
evalu false
पर ध्यान दिया गया, इसलिए हमें warning
assertion failure
के बारे में पता चला। यह भी ध्यान रखें कि हम "Stage 3"
को failure warning
के बाद देखते हैं, क्योंकि स्क्रिप्ट विफलता के बाद निष्पादन पर चलती है। जब तक दावा सही साबित होते हैं, उनके पास स्क्रिप्ट के चलने पर कोई प्रभाव नहीं पड़ता है, जिसका अर्थ है कि आप उन्हें डिबगिंग उद्देश्यों के लिए सम्मिलित कर सकते हैं और डिबगिंग समाप्त होने के बाद उन्हें बाहर निकालने की चिंता न करें।
आप अपने दावे निष्पादन धीमा है, जो है, हालांकि गति हिट कम से कम हो जाएगा, जो अभी और एक वैध चिंता का विषय है, तो आप assert_options()
फ़ंक्शन का उपयोग करके या करने के लिए assert.active
की स्थापना करके assert()
के निष्पादन निष्क्रिय कर सकते हैं के बारे में चिंतित हैं, तो अपनी php.ini फ़ाइल में बंद करें। यदि आप assert_options()
का उपयोग करना चाहते हैं, तो इसमें दो पैरामीटर लगते हैं - सेट करने का विकल्प और जिस मूल्य को आप इसे सेट करना चाहते हैं - और कई तरीकों से यह ज़ोरदार() अधिक शक्तिशाली बना सकता है।
ध्यान दें कि इन विकल्पों में से सभी अपने php.ini
फ़ाइल में सेट किया जा सकता है ताकि वे प्रभाव में हमेशा से रहे - कुंजी विकल्पों को बदलने के assert.active, assert.warning, assert.bail, assert.quiet_eval, and assert_callback
हैं।
ASSERT_CALLBACK
एक बहुत ही उपयोगी विकल्प है क्योंकि यह आपके कोड को दावा करने में विफल होने पर आपको एक त्रुटि हैंडलर लिखने की अनुमति देता है। जब फ़ंक्शन विफल हो जाते हैं तो निष्पादित करने के लिए फ़ंक्शन का स्ट्रिंग नाम लेता है, और आपके द्वारा परिभाषित फ़ंक्शन को तीन पैरामीटर लेना चाहिए - एक फ़ाइल को धारण करने के लिए, जहां कोई दावा होता है, एक लाइन को पकड़ने के लिए, और अभिव्यक्ति को पकड़ने के लिए। अपने कॉलबैक फ़ंक्शन में सभी तीनों का एक साथ उपयोग करने से आप सार्थक त्रुटि संदेश उत्पन्न कर सकते हैं जिन्हें आप आसानी से डीबग कर सकते हैं।इस कोड स्निपेट पर विचार करें:
<?php
function assert_failed($file, $line, $expr) {
print "Assertion failed in $file on line $line: $expr\n";
}
assert_options (ASSERT_CALLBACK, 'assert_failed');
assert_options (ASSERT_WARNING, 0);
$foo = 10;
$bar = 11;
assert('$foo > $bar');
?>
रेफरी: आधिकारिक दस्तावेज से http://www.hackingwithphp.com/19/8/3/making-assertions
उदाहरण
assert_options
- सेट/विभिन्न ज़ोर झंडे
उदाहरण # पाने 1 assert_options() उदाहरण
<?php
// This is our function to handle
// assert failures
function assert_failure()
{
echo 'Assert failed';
}
// This is our test function
function test_assert($parameter)
{
assert(is_bool($parameter));
}
// Set our assert options
assert_options(ASSERT_ACTIVE, true);
assert_options(ASSERT_BAIL, true);
assert_options(ASSERT_WARNING, false);
assert_options(ASSERT_CALLBACK, 'assert_failure');
// Make an assert that would fail
test_assert(1);
// This is never reached due to ASSERT_BAIL
// being true
echo 'Never reached';
?>
php documetnation अनुसार assert()
- अभिकथन एक स्ट्रिंग यह
assert()
द्वारा PHP कोड के रूप में मूल्यांकन किया जाएगा रूप दिया जाता है। - यदि आप दावा के रूप में एक बुलियन स्थिति पास करते हैं, तो यह स्थिति
assert_options()
के साथ परिभाषित किए गए दावे समारोह के पैरामीटर के रूप में दिखाई नहीं देगी। स्थिति को हैंडलर फ़ंक्शन को कॉल करने से पहले एक स्ट्रिंग में परिवर्तित किया जाता है, और बूलियन FALSE है खाली स्ट्रिंग के रूप में परिवर्तित। Assertions
को केवलdebugging
सुविधा के रूप में उपयोग किया जाना चाहिए। आप उन लोगों के लिए उपयोग कर सकते हैं जो सैनिटी-चेक के लिए परीक्षण करते हैं जो हमेशा सत्य होने के लिए परीक्षण करते हैं और जो कुछ प्रोग्रामिंग त्रुटियों को इंगित करते हैं, यदि एक्सटेंशन फ़ंक्शंस या कुछ सिस्टम सीमाओं और सुविधाओं जैसे कुछ विशेषताओं की उपस्थिति की जांच नहीं करते हैं।Assertions
सामान्य रनटाइम ऑपरेशंस जैसेinput parameter
चेक के लिए उपयोग नहीं किया जाना चाहिए। अंगूठे के नियम के रूप में यदि आपका दावा सक्रिय नहीं किया जाता है तो आपका कोड हमेशा सही ढंग से काम करने में सक्षम होना चाहिए।assert()
के व्यवहारassert_options()
द्वारा या.ini-settings
कि में वर्णित द्वारा विन्यस्त किया जा सकता है मैनुअल page.Theassert_options()
समारोह और/याASSERT_CALLBACK
विन्यास निर्देश अनुमति देने के एक कॉलबैक फ़ंक्शन में विफल रहा है दावे को संभालने के लिए स्थापित किया जाना कार्य करता है। 6.assert()
कॉलबैक स्वचालित परीक्षण सूट बनाने के लिए विशेष रूप से उपयोगी होते हैं क्योंकि वे दावा के लिए पारित कोड को आसानी से कैप्चर करने की अनुमति देते हैं, साथ ही कहां दावा किया गया था। हालांकि इस जानकारी को अन्य विधियों के माध्यम से पकड़ा जा सकता है, लेकिन दावाों का उपयोग करके यह बहुत तेज और आसान बनाता है!
"ASSERT_CALLBACK एक बहुत ही उपयोगी विकल्प है क्योंकि यह आपको एक कोड हैंडलर लिखने की अनुमति देता है जब आपका कोड किसी दावे में विफल रहता है। जब फ़ंक्शन विफल हो जाते हैं तो निष्पादित करने के लिए फ़ंक्शन का स्ट्रिंग नाम लेता है [...]" <- यह गलत है । दस्तावेज कहता है "असफल दावों पर कॉल करने के लिए कॉलबैक"। इसका मतलब है कि 'ASSERT_CALLBACK' [किसी भी कॉल करने योग्य] ले सकता है (http://php.net/manual/en/language.types.callable.php)। इसका मतलब यह है कि आप गुमनाम कार्यों और कुछ भी पारित कर सकते हैं जिन्हें फ़ंक्शन की तरह कहा जा सकता है। –
assert()
फ़ंक्शन यह सुनिश्चित करने का एक अच्छा तरीका है कि आपके कोड के पूरे जीवन में कुछ स्थितियां सत्य हों। पॉल हडसन द्वारा this article के शब्दों में: मूलतः
, जोर() कहने के लिए "- अगर यह नहीं है, कृपया मुझे बताओ यह बयान सही होना चाहिए" प्रयोग किया जाता है।
जैसे PHP स्क्रिप्ट निष्पादन न खत्म होने वाली है जब एक अभिकथन विफल रहता दावे से निपटने सक्षम करने के लिए, assert_options(ASSERT_ACTIVE)
उपयोग करें, और भी अन्य तर्क के साथ assert_options()
का उपयोग क्या होता है जब दावे विफल नियंत्रित करने के लिए (एक हैंडलर समारोह जो इस्तेमाल किया जा सकता बुला ईमेल भेजने के लिए, फाइलों और/या डेटाबेस टेबल, आदि में डेटा लॉग इन करें)। सभी विकल्पों और उनके परिणामों की सूची के लिए parameters अनुभाग का संदर्भ लें।
this playground example में कुछ विकल्पों को आज़माएं।
उन दोनों कार्यों के बारे में अधिक जानकारी के लिए that article पढ़ें।
- 1. हम setLayoutParams का उपयोग क्यों करते हैं?
- 2. हम serialization का उपयोग क्यों करते हैं?
- 3. हम टास्कस्टैकबिल्डर का उपयोग क्यों करते हैं?
- 4. सादा और सरल, हम _stdcall का उपयोग क्यों करते हैं?
- 5. हम कहां और क्यों PHP में __toString() का उपयोग करते हैं?
- 6. हम प्रोग्रामिंग में रेडियंस का उपयोग क्यों करते हैं?
- 7. हम क्यों नहीं उपयोग करते हैं == Matlab
- 8. हम जावा परियोजना में rt.jar का उपयोग क्यों करते हैं?
- 9. जहां हम JSON का उपयोग करते हैं?
- 10. हम रिफैक्टर क्यों करते हैं?
- 11. हम सदस्य रहित इंटरफ़ेस का उपयोग क्यों करते हैं?
- 12. एक परियोजना में 'assert' का उपयोग क्यों कर रहे हैं? (और क्यों यह तो कई बार उपयोग करते हुए)
- 13. हम स्मृति प्रबंधक का उपयोग क्यों करते हैं?
- 14. हम हाइबरनेट एनोटेशन का उपयोग क्यों करते हैं?
- 15. हम आखिरकार ब्लॉक का उपयोग क्यों करते हैं?
- 16. हम एमवीवीएम का उपयोग कब करते हैं?
- 17. हम क्यों कॉल करते हैं NotRecognizeSelector: विधि?
- 18. हम क्यों प्रयोग करते हैं tf.name_scope()
- 19. आप अभी भी PHP का उपयोग क्यों करते हैं?
- 20. हम सीएसएस में "स्थिति: रिश्तेदार" का उपयोग कब करते हैं?
- 21. Matlab में assert() का उपयोग कब करें?
- 22. क्या हम कथन के बिना अन्य का उपयोग करते हैं?
- 23. PHP में कक्षाओं का उपयोग क्यों करें?
- 24. हम jQuery में "({})" का उपयोग क्यों कर रहे हैं?
- 25. , हम डीबी मॉडल क्लास और मैपर क्लास का दो अलग क्यों उपयोग करते हैं?
- 26. हम क्यों पसंद करते हैं? सेवा मेरे ?? सी # में ऑपरेटर?
- 27. लंबित इरादे की अवधारणा क्या है? क्यों और जब हम लंबित इरादे का उपयोग करते हैं?
- 28. हम एंड्रॉइड एक्सएमएल फ़ाइल में नेमस्पेस क्यों निर्दिष्ट करते हैं?
- 29. कठपुतली और शेफ रूबी का उपयोग क्यों करते हैं?
- 30. हम PHP के कर्ल में CURLOPT_WRITEFUNCTION का उपयोग करने के लिए क्या करते हैं?
संभावित डुप्लिकेट [क्या मुझे अपने PHP कोड में जोर देना चाहिए?] (Https://stackoverflow.com/questions/4516419/should-i-be-using-assert-in-my-php-code) – user1506104
अनुशंसित देखने: पूर्व शर्त, आवेषण और रक्षात्मक प्रोग्रामिंग पर [जॉन लेकोस टॉक * रक्षात्मक प्रोग्रामिंग पूर्ण हो गया *] (https://www.youtube.com/watch?v=1QhtXRMp3Hg)। हालांकि यह एक सी ++ बात है, विचार किसी भी प्रोग्रामिंग भाषा पर लागू होते हैं और जॉन उस विषय के सबसे सटीक विवरणों में से एक देता है जो मुझे पता है। – ComicSansMS