উত্তর:
আপনি পিএইচপি নিজেই এটি করতে পারেন:
$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
$reflFunc = new ReflectionMethod($this, 'method_name');
হয় এমন একটি আইডিই ব্যবহার করুন যা এটি করার অনুমতি দেয় (আমি এক্স্লিপস পিডিটি পুনরায় ফিরিয়ে আনব), অথবা আপনি লিনাক্সে, বা উইংরেপ ব্যবহার করে সর্বদা এটি গ্রেপ করতে পারেন। লিনাক্সে এটি এমন কিছু হবে:
grep -R "function funName" *
প্রকল্পের মূল ফোল্ডারের মধ্যে থেকে।
আপনি যদি নেটবিন্সের মতো আইডিই ব্যবহার করেন তবে আপনি ফাংশন ব্যবহারের জন্য CTRL + ক্লিক করতে পারেন এবং এটি আপনাকে যেখানে সংজ্ঞায়িত করা হয়েছে সেখানে নিয়ে যাবে, ধরে নিবেন যে ফাইলটি আপনি নির্ধারিত প্রকল্প ফোল্ডারের মধ্যে রয়েছে।
এটি করার জন্য কোনও কোড বা ফাংশন নেই।
আমি ধরে নিয়েছি যে "বর্ণিত" দ্বারা আপনার অর্থ "সংজ্ঞায়িত"। এর জন্য, আপনার আদর্শভাবে একটি উপযুক্ত আইডিই দরকার যা এটি করতে পারে।
এখানে একটি বেসিক ফাংশন যা কোনও নির্দিষ্ট স্ট্রিংয়ের জন্য আপনার পুরো প্রকল্পের ফাইলগুলি স্ক্যান করে এবং আপনাকে জানায় যে এটি কোন ফাইলের মধ্যে রয়েছে এবং কোন বেসিক পজিশনটি কেবলমাত্র বেসিক পিএইচপি ব্যবহার করে এটি শুরু হয়। আশা করি এটি কাউকে সহায়তা করবে ...
<?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;
}
?>
আমি টমের সমাধান পছন্দ করি, তাই আমি ভেবেছিলাম যে আমি রিফ্লেকশন ফাংশনটির সাথে আরও কিছু কৌশল ভাগ করতে পারি (এটি প্রতিটি পিএইচপি 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 () মিথ্যা ফিরিয়ে দেবে।