function findFunction($function, $inputDirectory=""){
//version 0.1
$docRoot = getenv("DOCUMENT_ROOT");
$folderArray = null;
$dirArray = null;
// open directory
$directory = opendir($docRoot.$inputDirectory);
// get each entry
while($entryName = readdir($directory)) {
if(is_dir($entryName) && $entryName != "." && $entryName != ".."){
$folderArray[] = str_replace($inputDirectory, "", $entryName);
}
$ext = explode(".", $entryName);
if(!empty($ext[1])){
$dirArray[] = $docRoot.$inputDirectory."/".$entryName;
}
}
// close directory
closedir($directory);
$found = false;
if(is_array($dirArray)){
foreach($dirArray as $current){
$myFile = file_get_contents($current);
$myFile = str_replace("<?php", "", $myFile);
$myFile = str_replace("?>", "", $myFile);
if(preg_match("/function ".$function."/", $myFile)){
$found = true;
$foundLocation = $current;
break;
}
}
}
if($found){
echo $foundLocation;
exit;
} else if(is_array($folderArray)){
foreach($folderArray as $folder){
if(!isset($return)){
$return = findFunction($function, $inputDirectory."/".$folder);
} else if($return == false){
$return = findFunction($function, $inputDirectory."/".$folder);
}
}
} else {
return false;
}
}
findFunction("testFunction", "rootDirectory");
आशा है कि यह किसी को मदद मिलती है। यदि वास्तविक फ़ंक्शन httpdocs के बाहर है तो यह नहीं पाया जा सकता है क्योंकि सर्वर इसे अनुमति देने के लिए सेटअप नहीं होगा। केवल एक गहराई से एक फ़ोल्डर का परीक्षण किया लेकिन पुनरावर्ती पद्धति सिद्धांत में काम करना चाहिए।
यह संस्करण 0.1 की तरह है, लेकिन मुझे इस पर निरंतर विकास का इरादा नहीं है, इसलिए अगर कोई अपडेट करता है तो इसे दोबारा मुक्त करने में संकोच न करें।
यह निश्चित रूप से आप जो चाहते हैं वह करता है। लेकिन सावधान रहें 'debug_backtrace() 'एक महंगी कॉल है। कॉल-चेन निर्धारित करने के लिए इसका उपयोग करने की आदत में न आएं। यदि आप उन कार्यों को "सुरक्षित" करना चाहते हैं, तो ओओपी और संरक्षित विधियों की जांच करें। – ircmaxell
आप सभी को बहुत बहुत धन्यवाद! –