दिलचस्प पोस्ट
एक फ़ाइल पथ को चुनने के लिए VBScript को एक संवाद खोलने के लिए मैं Google डिस्क में उप-फ़ोल्डर्स और सब-सब-फ़ोल्डर्स कैसे खोजूं? तालिका में पहचान स्तंभ के लिए एक स्पष्ट मान केवल निर्दिष्ट किया जा सकता है जब एक स्तंभ सूची का उपयोग किया जाता है और IDENTITY_INSERT पर SQL सर्वर है HTTP http: // +: 8000 / HelloWCF / यूआरएल को पंजीकृत नहीं कर सका आपकी प्रक्रिया के पास इस नेमस्पेस का एक्सेस अधिकार नहीं है जावास्क्रिप्ट ऑब्जेक्ट को संदर्भ से नया वैरिएबल नहीं प्रतिलिपि कैसे करें? पायथन 3 के साथ पीपी कैसे स्थापित करें? शैल पुनर्निर्देशन I / O आदेश JCablebox को JTable में डालना "Process.stdout.write" और "console.log" के बीच अंतर node.js? प्रति उपयोगकर्ता नवीनतम रिकॉर्ड को पुनः प्राप्त करने के लिए ग्रुप द्वारा अनुकूलित करें रिवर्स ऑर्डर में लाइन द्वारा एक फ़ाइल लाइन पढ़ें 3.5 फ़्रेमवर्क को लक्षित करने के लिए Msbuild में एसजीएन टूलपैथ कैसे सेट करें मैं पायथन में एक्सेल फाइल कैसे खोल सकता हूँ? एक्लिप्से में पर्यावरण चर चहचहाना बूटस्ट्रैप ड्रॉपडाउन टॉगल लिंक पर क्लिक करने की अनुमति दें?

PHP क्लास के तरीकों में अग्रणी अंडरस्कोर के साथ क्या सौदा है?

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

public function _foo() 

…के बजाय…

 public function foo() 

मुझे पता है कि अंततः यह व्यक्तिगत वरीयता के लिए नीचे आता है, लेकिन मैं सोच रहा था कि किसी के पास इस बात की कुछ अंतर्दृष्टि थी कि यह आदत कहाँ से है।

मेरा विचार यह है कि संभवत: इसे पीएचपी 4 से आगे किया जा रहा है, इससे पहले कि क्लास के तरीकों को संरक्षित या निजी के रूप में चिह्नित किया जा सकता है, "इस पद्धति को कक्षा के बाहर से कॉल न करें" का मतलब है। हालांकि, यह मेरे साथ भी हुआ कि शायद यह कहीं (एक भाषा) उत्पन्न करता है जो मैं परिचित नहीं हूँ या इसके पीछे अच्छा तर्क हो सकता है कि मुझे जानने से लाभ होगा

किसी भी विचार, अंतर्दृष्टि और / या राय की सराहना की जाएगी

Solutions Collecting From Web of "PHP क्लास के तरीकों में अग्रणी अंडरस्कोर के साथ क्या सौदा है?"

यह ऑबजेक्ट ओरिएंटेड PHP (PHP 4) के बुरे पुराने दिनों से है। ओ ओ के कार्यान्वयन बहुत खराब था, और निजी विधियों जैसी चीजों को शामिल नहीं किया। क्षतिपूर्ति करने के लिए, पीएचपी डेवलपर्स ने पूर्ववर्ती विधियों को एक अंडरस्कोर के साथ निजी बनाने का इरादा किया था। कुछ पुराने वर्गों में आपको /**private*/ __foo() { इसे कुछ अतिरिक्त वजन देने के लिए /**private*/ __foo() {

मैंने डेवलपर्स के बारे में कभी नहीं सुना है कि वे अपने सभी विधियों को अंडरस्कोर से पहले से परिभाषित करते हैं, इसलिए मैं यह समझाने शुरू नहीं कर सकता कि वह क्या कारण है।

मेरा मानना ​​है कि PHP के लिए इन प्रकार के सम्मेलनों का सबसे अधिक प्रामाणिक स्रोत अभी पीएसआर-2: कोडिंग शैली गाइड होगा क्योंकि ज़ेंड फ्रेमवर्क पीएसआर का हिस्सा है:

संपत्ति नाम सुरक्षित या निजी दृश्यता को इंगित करने के लिए एकल अंडरस्कोर के साथ प्रीफ़िक्स नहीं किया जाना चाहिए।

अब, 2013 में, यह पीएसआर -2 कोडिंग दिशानिर्देश द्वारा "आधिकारिक तौर पर" खराब शैली है:

संपत्ति नाम सुरक्षित या निजी दृश्यता को इंगित करने के लिए एकल अंडरस्कोर के साथ प्रीफ़िक्स नहीं किया जाना चाहिए '

स्रोत: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md

प्रमुख अंडरस्कोर्स का आमतौर पर निजी संपत्तियों और विधियों के लिए उपयोग किया जाता है । एक ऐसा तकनीक नहीं है जो मैं आमतौर पर काम करता हूं, लेकिन कुछ प्रोग्रामरों के बीच लोकप्रिय रहता है।

मैं निजी / संरक्षित तरीकों को प्रीफ़िक्स करने के विरुद्ध जोरदार था क्योंकि आप उस के लिए निजी / सुरक्षित कीवर्ड का उपयोग कर सकते हैं और आईडीई आपके लिए इसे चिह्नित करेगा I

और मैं अभी भी हूं, लेकिन मुझे एक कारण मिला है कि यह एक अच्छा अभ्यास क्यों हो सकता है। कल्पना कीजिए कि आपके पास सार्वजनिक विधि है addFoo() और उस विधि के भीतर आपके पास कुछ ऐसे कार्य हैं जो अन्य विधियों addFooWhenBar() , addFooWhenBaz() साथ सामान्य है … अब, उस सामान्य विधि के लिए सबसे अच्छा नाम addFoo() , लेकिन यह पहले से ही लिया गया है, इसलिए आपको कुछ बदसूरत नामों जैसे addFooInternal() या addFooCommon() या … लेकिन _addFoo() निजी विधि सबसे अच्छा एक जैसा दिखता है।

मैं PHP 5 वर्ग में एक प्रमुख अंडरस्कोर का उपयोग करता हूं जो मैं निजी विधियों के लिए लिखता हूं। डेवलपर के लिए यह एक छोटा सा दृश्य क्यू है कि किसी खास क्लास सदस्य निजी है I इस प्रकार का इशारा किसी आईडीई का उपयोग करते समय उपयोगी नहीं है, जो आपके लिए सार्वजनिक और निजी सदस्यों को अलग करता है। मैंने इसे अपने सी # दिन से उठाया। पुरानी आदतें…

मेरा मानना ​​है कि आपका मूल धारणा सही था, मैंने इसे कुछ भाषाओं के तरीकों / सदस्यों को अधोरेखित करने के लिए आम अभ्यास के रूप में पाया है, जो कि "ऑब्जेक्ट" को निजी रखा जाना चाहिए। सिर्फ एक दृश्य तरीका कहने के लिए यद्यपि आप कर सकते हैं, आपको इसे बुला नहीं जाना चाहिए!

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

मुझे नहीं पता कि क्या यह अभी भी अजगर में उपयोग करने के लिए सम्मेलन है, यद्यपि

ड्रुपल (एक पीएचपी सीएमएस) अंडरस्कोर में हुक को ( https://api.drupal.org/api/drupal/includes.module.inc/group/hooks/7 ) कहा जाने से रोकने के लिए इस्तेमाल किया जा सकता है।

अगर मेरे पास "my_module" नामक एक मॉड्यूल है और फ़ंक्शन my_module_insert का नाम देना चाहते हैं तो यह समारोह hook_insert पर "हुक" होगा। इसे रोकने के लिए कि मैं _my_module_insert पर अपने फ़ंक्शन का नाम बदल सकता हूं

ps। ड्रुपल में जिस तरह से हुक काम करता है, वह गलती से हुक को लागू करना संभव है, जो बहुत खराब है।

ड्रपल, और अंडरस्कोर का उपयोग करना:

एक सामान्य तरीके से अंडरस्कोर सरल तथ्य के रूप में चिह्नित होता है कि एक फ़ंक्शन को केवल संबंधित मूल समारोह द्वारा बुलाया जाएगा …

 function mymodule_tool($sting="page title"){ $out =''; //do stuff $out .= _mymodule_tool_decor($sting); return $out; } function _mymodule_tool_decor($sting){ return '<h1>'.$string.'</h1>'; } 

बेशक, बस एक साधारण उदाहरण …

मैं एक ही जवाब की तलाश कर रहा था, मैंने कुछ शोध किए, और मैंने अभी खोज की है कि php चौखटे विभिन्न शैलियों का सुझाव देते हैं:

कोड इग्नेटर

आधिकारिक मैनुअल में कोडिंग स्टाइल अनुभाग है जो इस अभ्यास को प्रोत्साहित करता है :

निजी तरीके और चर

ऐसे तरीकों और वेरिएबल्स जिन्हें आंतरिक रूप से एक्सेस किया जाता है, जैसे यूटिलिटी और हेल्पर फ़ंक्शंस जो आपके पब्लिक विधियों का कोड अमूर्त के लिए उपयोग करते हैं, को एक अंडरस्कोर के साथ प्रीफिक्स किया जाना चाहिए।

 public function convert_text() private function _convert_text() 

अन्य चौखटे समान करते हैं, जैसे

CakePHP:

वही करता है :

सदस्य दृश्यता

विधियों और चर के लिए PHP5 के निजी और संरक्षित खोजशब्दों का उपयोग करें इसके अतिरिक्त, गैर-सार्वजनिक विधि या चर नाम एक एकल अंडरस्कोर (_) के साथ शुरू होते हैं। उदाहरण:

 class A { protected $_iAmAProtectedVariable; protected function _iAmAProtectedMethod() { /* ... */ } private $_iAmAPrivateVariable; private function _iAmAPrivateMethod() { /* ... */ } } 

और भी

नाशपाती

वही करता है :

निजी कक्षा के सदस्य एक अंडरस्कोर से पहले होते हैं। उदाहरण के लिए:

 $_status _sort() _initTree() 

जबकि

Drupal

कोड शैली विशेष रूप से इस के खिलाफ चेतावनी दी है :

  1. संरक्षित या निजी संपत्तियों और विधियों को एक अंडरस्कोर उपसर्ग का उपयोग नहीं करना चाहिए।

स्वर की समता

दूसरी ओर, घोषित करता है :

सिम्फनी पीएसआर -0, पीएसआर-1, पीएसआर-2 और पीएसआर -4 दस्तावेजों में परिभाषित मानकों का पालन करती है।

उद्देश्य को याद रखने के लिए अंडरस्कोर का उपयोग करना है कि हम 'चर को संशोधित नहीं करेंगे' / 'कक्षा को कॉल' समारोह के बाहर।

जैसा कि हम सभी अपरकेस में const चर को घोषित करते हैं ताकि चर का नाम देखकर अनुमान लगाया जा सके कि यह एक कॉन्स्ट चर है। समान वैरिएबल जैसा कि हम कक्षा के बाहर संशोधित नहीं करना चाहते हैं, हम इसे हमारे अपने सम्मेलन के लिए अंडरस्कोर के साथ घोषित करते हैं।

उन्हें "जादू पद्धतियां" कहा जाता है