클래스를 포함/요구하지 않고 파일 내에 클래스가 있는지 확인하는 방법이 있습니까?클래스가 파일을 필요로하지 않고/포함하지 않고 있는지 확인하십시오.
같은뭔가 : class_in_file($file);
class_exists($class);
을 찾고 다음/필요로하는 클래스를 포함하고 함께 할 수있어 언급 한 바와 같이
하지만, 다른 방법?
클래스를 포함/요구하지 않고 파일 내에 클래스가 있는지 확인하는 방법이 있습니까?클래스가 파일을 필요로하지 않고/포함하지 않고 있는지 확인하십시오.
같은뭔가 : class_in_file($file);
class_exists($class);
을 찾고 다음/필요로하는 클래스를 포함하고 함께 할 수있어 언급 한 바와 같이
하지만, 다른 방법?
$tokens = token_get_all(file_get_contents('foo.php'));
그런 다음 토큰을 통해 특정 T_CLASS
항목을 발견 할 수 있는지 확인하십시오.
http://www.php.net/manual/en/function.token-get-all.php
http://www.php.net/manual/en/tokens.php
PHP는 정의 된 파일을로드 (파싱) 한 경우에만 존재하는 클래스를 알고 있습니다 (내장되어 있지 않은 것으로 가정). 구조가 명확히 정의되어 있다면 (자동 로딩을 사용하는 것일 수도 있습니다), 클래스를 정의하는 파일이 존재하는지 여부 만 확인하면 클래스가 존재하는지 확인할 수 있습니다. 예 : if (file_exists('<path to app>/lib/Myapp/Util/Http.php'))
은 앱 디렉토리에 Myapp_Util_Http
클래스가 있는지 확인하는 데 사용할 수 있습니다. 실제로 클래스가 실제로 클래스에 있다는 것을 보증하지 않습니다. 당신은 그것을 포함하거나 필요로하거나 읽거나 파싱해야하거나, 자동 로딩을 사용하고 그것을 사용해보십시오.
PHP 파일은 텍스트 파일이므로 열어서 구문 분석하여 클래스 선언을 찾을 수 있습니다.
간단한 프로세스는 아니지만 좋은 구문 분석기는 작업을 사소한 것으로 만들어야합니다.
주석 처리 된 줄을 삭제해야합니다. 클래스 선언이 포함 된 문자열은 잘못된 결과를 유발할 수 있습니다. heredocs는 일을 더 복잡하게 만듭니다. Evals도 고려해야합니다.
명령 줄 PHP 인터프리터에 액세스 할 수 있다면 yw 작업의 좋은 반을 수행하는 주석과 공백을 제거하는 -w 스위치를 사용할 수 있습니다.
짧은 대답은 no입니다. 해결 방법 만 있습니다. 예를 들어, 당신은 (아마도 token_get_all
를 사용하여) 파일을 직접 분석 할 수있는, 혹은
<?php
/** #has_class(CLASSNAME)
*/
같은 상단에 코멘트와 함께 어떻게 든 파일을 표시하고 preg_match
로이 찾고 처음 몇 줄을 읽어 보시기 바랍니다.
그럼에도 불구하고 아직도 파일에 클래스가 있는지 확인해야합니다. 그렇지 않으면 어떻게 알 수 있습니까? class_in_file이 있다면 파일을 읽어야합니다. – Flukey
왜 그렇게 생각하는지 설명하면 사람들에게 많은 도움이됩니다. – CodeCaster
@Jamie 나는 그가'include'와'require'를 의미한다고 생각하는데, 이는 단지 파일을 읽는 것과는 다릅니다. – deceze