php 파일의 내용 (함수 이름뿐만 아니라)과 함께 함수 목록을 가져와야합니다. 정규 표현식을 사용하려고했지만 많은 제약이 있습니다. 모든 유형의 함수를 구문 분석하지는 않습니다. 예를 들어 함수에 if 및 for 루프 문이 있으면 실패합니다.php 파일의 데이터로 선언 된 함수 목록을 가져 오는 방법은 무엇입니까?
세부 사항 : 약 100 개의 파일이 있습니다. 각 파일에는 선언 된 함수의 수가 있습니다. 일부 파일에는 다른 파일에 복제 된 기능이 있습니다. 그래서 내가 원하는 것은 특정 파일로부터 모든 함수의 목록을 얻은 다음이 목록을 배열 안에 넣고 중복을 제거하기 위해 배열을 고유하게 사용할 것입니다. Tokenizer에 대해 읽었지 만 데이터로 선언 된 함수를 가져 오는 방법을 모릅니다. 내가 가진 모든이 있습니다 :
function get_defined_functions_in_file($file)
{
$source = file_get_contents($file);
$tokens = token_get_all($source);
$functions = array();
$nextStringIsFunc = false;
$inClass = false;
$bracesCount = 0;
foreach($tokens as $token) {
switch($token[0]) {
case T_CLASS:
$inClass = true;
break;
case T_FUNCTION:
if(!$inClass) $nextStringIsFunc = true;
break;
case T_STRING:
if($nextStringIsFunc) {
$nextStringIsFunc = false;
$functions[] = $token[1];
}
break;
// Anonymous functions
case '(':
case ';':
$nextStringIsFunc = false;
break;
// Exclude Classes
case '{':
if($inClass) $bracesCount++;
break;
case '}':
if($inClass) {
$bracesCount--;
if($bracesCount === 0) $inClass = false;
}
break;
}
}
return $functions;
}
불행하게도,이 기능 만 나열 함수 이름 .. 내가 필요한 이 구조 전체에 선언 된 기능 .. 그래서 어떤 아이디어를 나열하는 것입니다? 당신이 당신의 get_defined_functions
에서 함수 이름을 가지고있는 경우 사전에
덕분에 ..
당신이 함수 본문을 원하십니까, 예를 들어, 당신이'function foo() {return 'foo';}'를 발견했을 때'return 'foo;''를 반환하기를 원할 것입니다. 예상되는 결과의 예를 들어주십시오. 그리고 왜 처음부터 그렇게해야하는지에 대한 자세한 내용을 제공하십시오. – Gordon
"includer"라는 스크립트를 작성 중입니다. 이것은 PHP 파일을 구문 분석하는 데 사용되는 "포함"문을 포함합니다. 그래서 우리는 포함 된 경로를 읽고 file_get_contents를 사용하여 데이터를 얻습니다. 다시 주 파일로 옮깁니다. 약 100 개의 파일이 있습니다. 이 파일들 각각에는 몇 가지 기능이 있습니다. 일부 함수는 다른 파일에서 다시 선언되었습니다. 그래서 내가 원하는 것은이 모든 파일에서 모든 함수 목록을 얻는 것입니다. 그리고 나서이 함수들을 포함하고 있습니다. 그런 다음 배열 안에 넣고 마지막으로 array_unique를 사용하여 중복을 제거해야합니다. 당신이 더 나은 해결책을 가지고 계신다면 저에게 계발하십시오. 고마워, – ermac2014