함수가 정의 된 위치를 찾는 방법은 무엇입니까?
주어진 함수가 정의 된 파일과 줄을 어떻게 알 수 있습니까?
PHP 자체에서도이 작업을 수행 할 수 있습니다.
$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
그렇게 할 수있는 IDE를 사용하거나 (Eclipse PDT를 권장합니다) Linux에서라면 항상 grep하거나 wingrep을 사용할 수 있습니다. Linux에서는 다음과 같습니다.
grep -R "function funName" *
프로젝트의 루트 폴더 내에서.
Netbeans와 같은 IDE를 사용하는 경우 함수 사용을 CTRL + 클릭하면 정의한 프로젝트 폴더 내에 파일이 있다고 가정하여 정의 된 위치로 이동합니다.
이 작업을 수행하는 코드 나 기능은 없습니다.
"설명 된"은 "정의 된"을 의미한다고 가정합니다. 이를 위해 이상적으로는이를 수행 할 수있는 적절한 IDE가 필요합니다.
다음 은 특정 문자열에 대해 전체 프로젝트 파일 을 스캔 하고 파일이있는 파일과 기본 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 오류 시스템은 단순히 함수가 이전에 정의 된 위치를 알려주는 오류를 반환합니다.
나는 Tom의 솔루션을 좋아하기 때문에 ReflectionFunction 과 약간 더 많은 트릭을 공유 할 수 있다고 생각 했습니다 (모든 PHP 5에서 작동해야 함).
한 줄로 파일 이름을 인쇄합니다.
print (new ReflectionFunction("foo"))->getFileName();
내부 함수 (예 : _ ) 의 위치는 표시되지 않지만 여전히 아래와 같이 API를 인쇄 할 수 있습니다.
함수의 정의와 매개 변수를 인쇄하려면 :
print new ReflectionFunction("foo");
예:
$ php -r 'print new ReflectionFunction("_");' Function [ <internal:gettext> function _ ] { - Parameters [1] { Parameter #0 [ <required> $msgid ] } }
You'll need an IDE that supports "Open Function Declaration" functionality. A good for for php is Eclipse PDT.
To look for the function definition, highlight the function name, hold CTRL + Click on the name.
참고URL : https://stackoverflow.com/questions/2222142/how-to-find-out-where-a-function-is-defined
'Programing' 카테고리의 다른 글
파일 설명자와 파일 포인터의 차이점은 무엇입니까? (0) | 2020.08.13 |
---|---|
React에서 로컬 이미지를 어떻게 참조합니까? (0) | 2020.08.13 |
JavaScript에서 Date 객체를 수신하기 위해 JSON을 구문 분석하는 방법은 무엇입니까? (0) | 2020.08.13 |
Resharper Ctrl-T 매핑 손실 (0) | 2020.08.13 |
Rails 마이그레이션 : t. 대체 이름이있는 참조? (0) | 2020.08.13 |