जवाबों:
आप इसे PHP में भी कर सकते हैं:
$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
$reflFunc = new ReflectionMethod($this, 'method_name');
या तो एक आईडीई का उपयोग करें जो ऐसा करने की अनुमति देता है (मैं ग्रहण पीडीटी को पुनः प्राप्त करूँगा), या आप इसे लिनक्स पर कर सकते हैं या यदि लिनक्स पर, या विंगरेप का उपयोग कर सकते हैं। लिनक्स में यह कुछ इस तरह होगा:
grep -R "function funName" *
परियोजना के रूट फ़ोल्डर में से।
यदि आप Netbeans की तरह एक IDE का उपयोग करते हैं, तो आप फ़ंक्शन उपयोग को CTRL + क्लिक कर सकते हैं और यह आपको वहाँ ले जाएगा जहाँ इसे परिभाषित किया गया है, यह मानते हुए कि फ़ाइल आपके द्वारा परिभाषित प्रोजेक्ट फ़ोल्डर के भीतर है।
हालांकि ऐसा करने के लिए कोई कोड या फ़ंक्शन नहीं है।
मुझे लगता है कि "वर्णित" से आपका मतलब "परिभाषित" है। इसके लिए, आपको आदर्श रूप से एक सभ्य आईडीई की आवश्यकता है जो इसे कर सके।
एक बुनियादी कार्य है जो एक विशिष्ट स्ट्रिंग के लिए आपकी संपूर्ण परियोजना फ़ाइलों को स्कैन करेगा और आपको बताएगा कि यह किस फ़ाइल में है और कौन सी चार्ट स्थिति में यह केवल मूल php का उपयोग करके शुरू होता है। उम्मीद है कि यह किसी की मदद करता है ...
<?php
$find="somefunction()";
echo findString('./ProjectFolderOrPath/',$find);
function findString($path,$find){
$return='';
ob_start();
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if(is_dir($path.'/'.$file)){
$sub=findString($path.'/'.$file,$find);
if(isset($sub)){
echo $sub.PHP_EOL;
}
}else{
$ext=substr(strtolower($file),-3);
if($ext=='php'){
$filesource=file_get_contents($path.'/'.$file);
$pos = strpos($filesource, $find);
if ($pos === false) {
continue;
} else {
echo "The string '$find' was found in the file '$path/$file and exists at position $pos<br />";
}
}else{
continue;
}
}
}
}
closedir($handle);
}
$return = ob_get_contents();
ob_end_clean();
return $return;
}
?>
मुझे टॉम का समाधान पसंद है, इसलिए मुझे लगा कि मैं इसके साथ कुछ और ट्रिक्स साझा कर सकता हूं रिफ्लेक्शन (यह हर PHP 5 पर काम करना चाहिए):
फ़ाइल नाम मुद्रित करने के लिए एक-लाइनर:
print (new ReflectionFunction("foo"))->getFileName();कृपया ध्यान दें कि यह आपको आंतरिक कार्यों (जैसे कि) के लिए स्थान नहीं दिखाएगा _ ) के , लेकिन यह अभी भी नीचे के लिए एपीआई प्रिंट कर सकता है।
फ़ंक्शन की परिभाषा और मापदंडों को मुद्रित करने के लिए:
print new ReflectionFunction("foo");
उदाहरण:
$ php -r 'print new ReflectionFunction("_");'
Function [ <internal:gettext> function _ ] {
- Parameters [1] {
Parameter #0 [ <required> $msgid ]
}
}
$reflFunc->isInternal() === TRUEअर्थ है -> getFileName () और -> getStartLine () FALSE लौटाएगा।