함수가 정의되어 있는 장소를 확인하는 방법
특정 함수가 정의된 파일 및 행을 확인하려면 어떻게 해야 합니까?
PHP 자체에서도 이 작업을 수행할 수 있습니다.
$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
이를 허용하는 IDE를 사용하거나(Eclipse PDT를 권장함), 리눅스 또는 wingrep을 사용하는 경우 언제든지 GREP를 사용할 수 있습니다.Linux 에서는 다음과 같습니다.
grep -R "function funName" *
프로젝트의 루트 폴더 내에서 사용할 수 있습니다.
Netbeans와 같은 IDE를 사용하는 경우 CTRL+함수 사용을 클릭하면 정의한 프로젝트 폴더 내에 파일이 있다고 가정하여 정의된 위치로 이동합니다.
단, 이를 위한 코드나 함수는 없습니다.
'descripted'라는 말은 'defined'라는 뜻인 것 같아요.그러기 위해서는 적절한 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;
}
?>
톰의 솔루션이 마음에 들어서 Reflection과 조금 더 트릭을 공유할 수 있을 것 같아서기능(모든 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 ] } }
함수가 정의된 위치를 확인하고 함수를 재정의하려고 하면 PHP 오류 시스템은 이전에 정의된 함수의 위치를 알려주는 오류를 반환합니다.
기능 선언 열기 기능을 지원하는 IDE가 필요합니다.php에 적합한 것은 Eclipse PDT입니다.
함수 정의를 찾으려면 함수 이름을 강조 표시하고 CTRL 키를 누른 상태에서 이름을 클릭합니다.
언급URL : https://stackoverflow.com/questions/2222142/how-to-find-out-where-a-function-is-defined
'itsource' 카테고리의 다른 글
Mysql 1050 오류 "테이블은 이미 존재합니다" 실제로는 존재하지 않습니다. (0) | 2022.12.24 |
---|---|
PHP가 777 권한을 가진 디렉토리를 만들 수 없는 이유는 무엇입니까? (0) | 2022.12.24 |
PHP 메모리 프로파일링 (0) | 2022.12.04 |
node.js에 사용할 수 있는 MySQL 드라이버는 무엇입니까? (0) | 2022.12.04 |
PHP-FPM 및 Nginx: 502 불량 게이트웨이 (0) | 2022.12.04 |