2009-09-15 10 views

उत्तर

81

निश्चित रूप से, आप जादू स्थिरांक चाहते हैं।

function myFunction() { print __FUNCTION__." in ".__FILE__." at ".__LINE__."\n"; } 

अधिक से the php manual

+32

को अपडेट करना भूल सकता है और केवल गालिया होने के लिए, विधि के लिए जादू निरंतर नाम है: '__METHOD__' – Anthony

+24

खेल के लिए देर हो चुकी है, लेकिन मुझे यह जानकर आश्चर्य हुआ कि '__METHOD__' वास्तव में' कक्षा :: विधि 'देता है, इसलिए' __FUNCTION__' विशेष रूप से केवल विधि का नाम देता है ... किसी और के लिए जो * अभी भी * मेरे जैसे आरटीएफएम नहीं है। – Chords

-4

आप ऐसा क्यों नहीं कर सकते?

public function something() { 
    $thisMethodName = "something"; 
} 
+8

'__FUNCTION__' उपलब्ध होने पर पूरी तरह से अनावश्यक है। –

+1

पर्याप्त मेला - लेकिन एक ही भावना में मैं संतुष्ट कर सकता हूं कि '__FUNCTION__ अनावश्यक है :) –

+4

विधि को नया नाम प्राप्त होने पर खतरनाक, देव विविध सामग्री –

1

hackish जानकारी प्राप्त करें, लेकिन आप भी शायद यह debug_backtrace() वापसी मान से बाहर खुदाई कर सकते हैं।

19

जबकि आप magic constant "__METHOD __" का उपयोग कर सकते हैं, तो मैं अत्यधिक PHP की reflection की जांच करने की अनुशंसा करता हूं। यह PHP5 में समर्थित है।

$modelReflector = new ReflectionClass(__CLASS__); 
$method = $modelReflector->getMethod(__METHOD__); 

फिर आप हस्ताक्षर निरीक्षण की तरह गधा सामान किक कर सकते हैं, आदि

+0

जब आप कहते हैं "हस्ताक्षर का निरीक्षण करें", तो आप इसका मतलब है? http://www.php.net/manual/en/function.openssl-verify.php –

+0

@MrMe No, एक विधि हस्ताक्षर (प्रमाणीकरण हस्ताक्षर से भ्रमित नहीं होना) इस तरह: http: //en.wikipedia। संगठन/विकी/Type_signature – thesmart

+0

ओह ठीक है, यह मूल रूप से टाइपिंग http: // stackoverflow टाइप करें।कॉम/प्रश्न/2161040/is-method-signature-in-php-a-must-or-चाहिए धन्यवाद! –

10

रूप smartj सुझाव आप जादू निरंतर __METHOD__ कोशिश कर सकते हैं, लेकिन याद रखें कि यह एक स्ट्रिंग भी अपने वर्ग के नाम युक्त वापस आ जाएगी, यानी 'MyClass :: कुछ'। __FUNCTION__ का उपयोग करके 'कुछ' वापस कर देगा।

2

__FUNCTION__ का उपयोग करने के बजाय जाने का रास्ता है:

public function something() { 
    $thisMethodName = "something"; 
} 

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

PHP में मैजिक स्थिरांक बदलने की गारंटी नहीं है, जबकि विधि के नाम बदलने के लिए इस दृष्टिकोण को लागू संपादन की आवश्यकता होगी, इस प्रकार एक असंगतता की संभावना शुरू हो जाएगी (नोट, मैंने संभावित रूप से कहा था, जिसका अर्थ यह है कि यह अन्यथा अनावश्यक है संपादित करें कि इसके बजाय जादू निरंतर उपयोग किया गया था)।

एक चर नाम देने का समय और प्रयास, विधि नाम को उस अनावश्यक चर के लिए एक स्ट्रिंग के रूप में दोबारा टाइप करें और निश्चित रूप से चर नाम का सही संदर्भ दे रहा है, जो PHP के लिए शुरू करने के लिए जादू स्थिरांक की प्रेरणा है (और किसी भी दावे को अस्वीकार करना __FUNCTION__ अनावश्यक है)।

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

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